Skip to main content

448. Find All Numbers Disappeared in an Array

分析

换过来的还要进行考察

题解

function findDisappearedNumbers(nums: number[]): number[] {
// nums 理想情况 num[i] = i + 1
let i = 0
while (i < nums.length) {
// 如果满足理想情况,这个数字不需要进行处理
if (nums[i] === i + 1) {
i++
continue
}
// swap(a, b) nums[a] = nums[b] 那就没必要换了,换过来的元素还要进行考察,会进入死循环
const posi = nums[i] - 1;
if (nums[posi] === nums[i]) {
i++
continue
}
[nums[posi], nums[i]] = [nums[i], nums[posi]]
}

const ans = []
for (let i = 0; i < nums.length; i++) {
if (nums[i] === i + 1) {
continue
}
ans.push(i + 1)
}

return ans
};