1. 程式人生 > 其它 >演算法筆記- 找到所有陣列中消失的數字

演算法筆記- 找到所有陣列中消失的數字

找到所有陣列中消失的數字

  • 理論上來來說可以使用多餘的儲存空間,利用一個雜湊表,將陣列中出現的元素進行記錄,最後進行雜湊表查值,將1-n之間未出現的數字輸出。

  • 但是本題要求不許使用額外的空間。

  • 解題思路
    -- 首先指向陣列的首元素,將該元素(絕對值)n-1得到需要操作的元素的下標,將該下標的陣列元素改為負值,進行一輪迴圈後。
    -- 操作後的陣列,因為指定1-n,而陣列的下標的範圍是1-(n-1);所以對指標指向的元素進行減一操作,使用變負值對出現的數字進行標記,這樣逐一排查後得到的陣列中,不是負數的元素的下標就是陣列中未出現1-n的陣列。

  • 這個演算法很巧妙,妙就妙在利用了陣列元素下標與所求範圍之間對應的關係。從而使得該問題的解決變得更加簡單起來
    -- 重要的是思想,將題目反覆閱讀,思考其中的聯絡,方便解決問題。