力扣一题 448.找到所有数组中消失的数字

173 阅读1分钟

image-20211101213708714.png

思路:

这道题的难度为“简单”,如果不考虑进阶条件,我们直接对数组进行排序,再遍历一遍排序后的数组即可找出答案。考虑到进阶条件,我们需要做出一定的变式

遍历数组,如果元素没有在它应该在的位置,且它应该在的位置上的那个元素不是在正确的位置,则交换两个元素的位置。解释:正常情况下,元素1的下标应该为0,元素3的下标应该为2,即值与下标的差为1,如果不满足这个条件,那么这个元素就是不在正确的位置上,需要进行调整

再次遍历数组,把不在正确位置上的元素放入集合,返回集合即为答案

image-20210601204340500.png

注意:

在while里的nums[i]-1的值是会变化的,所以需要使用变量tem先保存起来