Problem: 260. 只出现一次的数字 III

思路

①map计数
②排序后,前后不一样的就是答案


class Solution {
public:
    vector<int> singleNumber(vector<int>& nums) {
        int n=nums.size();
        vector<int>res;
        //map计数
        map<int,int>ma;
        for(int i=0;i<n;i++){
            ma[nums[i]]++;
        }
        for(auto [x,val]:ma){
            if(val==1)res.push_back(x);
        }
        return res;
    }
};

class Solution {
public:
    vector<int> singleNumber(vector<int>& nums) {
        int n=nums.size();
        vector<int>res;
        //排序后,前后不一样的就是答案
        sort(nums.begin(),nums.end());
        if(n==2)return nums;
        if(nums[0]!=nums[1])res.push_back(nums[0]);
        if(nums[n-1]!=nums[n-2])res.push_back(nums[n-1]);
        if(res.size()==2)return res;
        for(int i=1;i<n-1;i++){
            if(nums[i]!=nums[i-1] && nums[i]!=nums[i+1]){
                res.push_back(nums[i]);
            }
        }
        return res;
    }
};