zoukankan      html  css  js  c++  java
  • Find All Duplicates in an Array 找出数组中所有重复项

    //solution1
    /**
    //references:https://www.cnblogs.com/grandyang/p/6209746.html
      */
    class Solution1{
    public:
        vector<int> findDuplicates(vector<int>& nums){
            vector<int> res;
            for(int i = 0; i < nums.size(); i++){
                int idx = abs(nums[i])-1;
                if(nums[idx] < 0) res.push_back(idx+1);
                nums[idx] = -nums[idx];
            }
            return res;
        }
    };
    
    class Solution2{
    public:
        vector<int> findDuplicates(vector<int>& nums){
            vector<int> res;
            for(int i = 0; i < nums.size(); i++){
                if(nums[i] != nums[nums[i]-1]){
                    swap(nums[i],nums[nums[i]-1]);
                    --i;
                }
            }
    
            for(int i = 0; i < nums.size(); i++){
                if(nums[i] != i+1) res.push_back(nums[i]);
            }
            return res;
        }
    };
    
    
    class Solution3{
    public:
        vector<int> findDuplicates(vector<int>& nums){
            vector<int> res;
            int n = nums.size();
            for(int i = 0; i < n; ++i){
                nums[(nums[i]-1)%n] += n;
            }
    
            for(int i = 0; i < n; ++i){
                if(nums[i] > 2*n) res.push_back(i+1);
            }
            return res;
        }
    };
    

      

    怕什么真理无穷,进一寸有一寸的欢喜。---胡适
  • 相关阅读:
    练习三
    练习四
    练习二
    软件生命周期
    练习一 第六题
    练习一 第五题
    练习一 第四题
    练习一 第三题
    练习一 第二题
    AngularJs模块
  • 原文地址:https://www.cnblogs.com/hujianglang/p/12467938.html
Copyright © 2011-2022 走看看