数组--元素的值跟下标有关
基本描述
给定一个包含 (n + 1)/n 个整数的数组 nums ,其数字都在 1 到 n 之间(包括 1 和 n),找相同或者没有的元素
例题
思路
基本思路:遍历整个列表,对以元素为下标的值进行某种变换,比如+n或者变成负数来更改,从而筛选出特殊的值
448.找到所有数组中消失的数字
描述:给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1, n] 内。请你找出所有在 [1, n] 范围内但没有出现在 nums 中的数字,并以数组的形式返回结果。
示例 1:
输入:nums = [4,3,2,7,8,2,3,1]
输出:[5,6]
示例 2:
输入:nums = [1,1]
输出:[2]
思路:
O(n) + O(1) 可以在原数组上修改。
- 遍历数组nums,将元素num对应的索引nums[num]的元素+n,找到<=n的元素,就是nums中不存在的元素,>n*2的就是重复两遍的元素。
- 遍历数组nums,将元素num对应的索引nums[num]的元素变为负数,但是索引的时候要取绝对值。