[剑指 Offer 56 - II. 数组中数字出现的次数 II]

[剑指 Offer 56 - II. 数组中数字出现的次数 II]

在一个数组 nums 中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。

示例 1:

输入:nums = [3,4,3,3]
输出:4

示例 2:

输入:nums = [9,1,7,9,7,9,7]
输出:1

限制:

1 <= nums.length <= 10000
1 <= nums[i] < 2^31

方法1:使用hash的方式,对数组中的数值进行存储,key为数组中的每个数值,data为数值出现的次数

class Solution {
public:
    unordered_map<int,int>map;
public:
    int singleNumber(vector<int>& nums) {
        for(int num : nums) {
            map[num]++;
        }
        for (int num : nums) {
            if (map[num] == 1) {
                return num;
            }
        }
        return 0;
    }
};

方法2:看到说是可以使用异或的方式,奈何还没看懂

posted @ 2020-09-23 00:27  WangCoder  阅读(131)  评论(0编辑  收藏  举报