• Leetcode 442. 数组中重复的数据(已解决)


    Let
    给你一个长度为 n 的整数数组 nums ,其中 nums 的所有整数都在范围 [1, n] 内,且每个整数出现 一次 或 两次 。请你找出所有出现 两次 的整数,并以数组形式返回。

    你必须设计并实现一个时间复杂度为 O(n) 且仅使用常量额外空间的算法解决此问题。

    示例 1:

    输入:nums = [4,3,2,7,8,2,3,1]
    输出:[2,3]
    

    示例 2:

    输入:nums = [1,1,2]
    输出:[1]
    

    示例 3:

    输入:nums = [1]
    输出:[]
    

    提示:

    • n == nums.length
    • 1 <= n <= 105
    • 1 <= nums[i] <= n
    • nums 中的每个元素出现 一次 或 两次

    Code:

    class Solution {
    public:
        vector<int> findDuplicates(vector<int>& nums) {
            vector<int>res;
            for(int i=0;i<nums.size();i++)
            {
                int cnt=count(nums.begin(),nums.end(),nums[i]);
                if(cnt==2)
                    res.push_back(nums[i]);
            }
            sort(res.begin(),res.end());  
            res.erase(unique(res.begin(),res.end()),res.end());  
            
            return res;
        }
    };
    
    class Solution {
    public:
        vector<int> findDuplicates(vector<int>& nums)
        {
            map<int,int>mymap;
            vector<int>res;
            for(int i=0;i<nums.size();i++)
            {
                mymap[nums[i]]++;
            }
            
            map<int,int>::iterator it;
            
            for(it=mymap.begin();it!=mymap.end();++it)
            {
                if(it->second==2)
                {
                    res.push_back(it->first);
                }
            }
            return res;
        }
    };
    
  • 相关阅读:
    八大经典排序算法(java)
    递归问题 java
    数据结构 栈
    数据结构 环形链表(约瑟夫环)
    第九届蓝桥杯b组java
    机器学习基石1-概述
    Java基础9-死锁;String;编码
    Java基础8-多线程;同步代码块
    Java基础7-异常;jar包
    Java基础6-多态;匿名内部类;适配器模式
  • 原文地址:https://www.cnblogs.com/xiaohai123/p/16341353.html
Copyright © 2020-2023  润新知