每日一题--简单-- 找到所有数组中消失的数字(448)

57 阅读1分钟

题目:给你一个含 n个整数的数组 nums,其中 nums[i]在区间 [1, n]内。请你找出所有在 [1, n] 范围内但没有出现在 nums中的数字,并以数组的形式返回结果。

示例 1:

输入:nums = [4,3,2,7,8,2,3,1]
输出:[5,6]

🙇‍♂️感想:这道题与上一道268题差不多,只不过上一题只需要找到一个,这一题是找出所有。

🙇‍♂️ 解题思路:这道题要找出所有肯定要遍历完整个数组。而且最大值也只能是数组的长度, 并且在数组内数值也可能重复,如[1,1], 输出2这种。最理想的状态就是1→n。所有只需要从1开始遍历数组的长度,判断数组中是否存在当前遍历到的值,不存在则加入结果集即可

function findDisappearedNumbers(nums: number[]): number[] {
  let result: number[] = []
  let length: number = nums.length
  for (let i = 1; i <= length; i++) {
    if (!nums.includes(i)) {
      result.push(i)
    }
  }
  return result
};