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;
        }
    };
    

      

    怕什么真理无穷,进一寸有一寸的欢喜。---胡适
  • 相关阅读:
    hdu 1232 最小生成树
    hdu 1260 dp
    hdu 1385 最短路径按字典数输出
    hdu 1541 树状数组
    hdu 1544 求字符串回文
    hdu 1728
    hdu 1754 树状数组求最大值
    hdu 1892 二维树状数组
    hdu 2082 母函数
    循环
  • 原文地址:https://www.cnblogs.com/hujianglang/p/12467938.html
Copyright © 2011-2022 走看看