算法笔记- 找到所有数组中消失的数字

找到所有数组中消失的数字

image

  • 理论上来来说可以使用多余的储存空间,利用一个哈希表,将数组中出现的元素进行记录,最后进行哈希表查值,将1-n之间未出现的数字输出。

  • 但是本题要求不许使用额外的空间。

  • 解题思路
    -- 首先指向数组的首元素,将该元素(绝对值)n-1得到需要操作的元素的下标,将该下标的数组元素改为负值,进行一轮循环后。
    -- 操作后的数组,因为指定1-n,而数组的下标的范围是1-(n-1);所以对指针指向的元素进行减一操作,使用变负值对出现的数字进行标记,这样逐一排查后得到的数组中,不是负数的元素的下标就是数组中未出现1-n的数组。
    image

  • 这个算法很巧妙,妙就妙在利用了数组元素下标与所求范围之间对应的关系。从而使得该问题的解决变得更加简单起来
    -- 重要的是思想,将题目反复阅读,思考其中的联系,方便解决问题。

posted @ 2022-04-02 21:15  云吞豚  阅读(46)  评论(0)    收藏  举报