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

-
理论上来来说可以使用多余的储存空间,利用一个哈希表,将数组中出现的元素进行记录,最后进行哈希表查值,将1-n之间未出现的数字输出。
-
但是本题要求不许使用额外的空间。
-
解题思路
-- 首先指向数组的首元素,将该元素(绝对值)n-1得到需要操作的元素的下标,将该下标的数组元素改为负值,进行一轮循环后。
-- 操作后的数组,因为指定1-n,而数组的下标的范围是1-(n-1);所以对指针指向的元素进行减一操作,使用变负值对出现的数字进行标记,这样逐一排查后得到的数组中,不是负数的元素的下标就是数组中未出现1-n的数组。

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

浙公网安备 33010602011771号