0
給定一個整數數組,將每個數字a [i]替換爲右邊更高的數字(根據數值),其值與[i]更接近(如果不存在,則保持原樣)。替換每個數字,a [i]在其右側有更高的數字,
例如
輸入 - > 3 7 5
輸出 - > 5 7 5
輸入 - > 3 6 2 6 4 7 1
輸出 - > 4 7 4 7 7 7 1
這個問題在採訪中被問到。
如果從右側開始並在BST中插入每個元素,然後在BST中找到更接近的值,但在最壞的情況下該方法也將爲O(n^2)。
有沒有優化的方法呢?
代碼在哪裏? – MariuszS
如果您使用自平衡BST,您可以輕鬆進入'O(NlogN)'。 – Danstahr
如何用數字和索引存儲創建數組 - O(n),用O(nlogn)對它進行排序,重新創建數組?上)。這將是n + n + nlogn - > O(nlogn) –