其他分享
首页 > 其他分享> > 448. Find All Numbers Disappeared in an Array

448. Find All Numbers Disappeared in an Array

作者:互联网

仅供自己学习

 

思路:

因为题目说不能使用额外的空间,那么只能在原数组进行操作。因为数组的大小为n,所以即使少了一些 1~n的元素,但数组的下标仍然存在,那么我们就可以考虑通过下标来判断哪些元素不存在。因为我们的元素都小于等于n,所以元素-1作为下标并且对该下标的元素进行加n,当数组遍历完成后,存在的数字那么以该数字-1做下标的元素就会大于n,那么不存在的数字-1做下标的元素就会小于等于n,那么我们在遍历一次数组长出小于n的元素的下标再加一即可。

 

代码:

 1 class Solution {
 2 public:
 3     vector<int> findDisappearedNumbers(vector<int>& nums) {
 4         int n=nums.size();
 5         vector<int> res;
 6         for(int i=0;i<n;++i){
 7             int index = (nums[i]-1)%n;
 8             nums[index] += n;
 9         }
10         for(int i=0;i<n;++i){
11             if(nums[i]<=n)
12                 res.push_back(i+1);
13         }
14         return res;
15     }
16 };

 

标签:448,下标,nums,做下,元素,Disappeared,vector,数组,Array
来源: https://www.cnblogs.com/Mrsdwang/p/14400247.html