這是我在互聯網上發現的一個問題,在採訪中被問到。在字符和整數中找到第k個非重複元素(大尺寸)
給定一個非常大的字符和整數數組,我們必須找到第K個非重複元素。
例如:如果數組是{1,2,a,s,2,s,b,v}
並且如果K = 3
那麼答案應該是'b'。
需要約束:O(N)
時間和O(1)
空間。
我做了什麼?
我能想出的最佳解決方案是製作大小爲256
的數組,並在元素出現時對其進行散列處理。
我認爲這是一個有效的解決方案,因爲數組256
的大小與輸入數組大小無關。
我也嘗試過使用Kth-order statistics
的方法,但是不能形成一個算法,因爲很多數字可以在第k個必需元素前後重複,所以無法確定它的位置。
我需要什麼?
請分享你的觀點,你將如何處理它。
我不想要任何代碼。
您的解決方案有什麼問題?我喜歡它,它使用O(1)內存並在O(n)時間工作 –
我想知道如何應用K階統計方法 –
如果您知道,該數組僅包含英文字母和數字,則可以減少數組大小爲28 + 10項......甚至可以進一步並保持僅38位 –