Leetcode442. 数组中重复的数据

Leetcode442. 数组中重复的数据,第1张

思路

表中每个元素的范围为1~n,所以将每个元素k交换至对应下标k-1的位置;最后再将所有不在位置上的元素加入ans数组即可

代码
class Solution {
public:
    vector<int> findDuplicates(vector<int>& nums) {
        vector<int> ans;
        for(int i=0;i<nums.size();i++)
        {
            int j=i;
            while(nums[j]-1!=j&&nums[j]!=nums[nums[j]-1])
            {
                //互换nums[j] 和 nums[nums[j]-1]
                int a=nums[nums[j]-1];
                nums[nums[j]-1]=nums[j];
                nums[j]=a;
            }
        }
        for(int i=0;i<nums.size();i++)
        {
            if(nums[i]!=i+1)
                ans.push_back(nums[i]);
        }
        return ans;
    }
};

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/875280.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-13
下一篇 2022-05-13

发表评论

登录后才能评论

评论列表(0条)

保存