剑指Offer面试题56 - II. 数组中数字出现的次数 II

Posted galaxy-hao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指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

思路一:哈希

先统计每个数出现次数,然后遍历找到只出现一次的数字。

代码

时间复杂度:O(n)
空间复杂度:O(n)

class Solution {
public:
    int singleNumber(vector<int>& nums) {
        int res = 0;
        unordered_map<int, int> ump;
        for (auto n : nums) {
            if (ump.count(n) == 0) {
                ump.insert({n, 1});
            } else {
                ++ump[n];
            }
        }
        for (auto it = ump.begin(); it != ump.end(); ++it) {
            if (it->second == 1) return it->first;
        }
        return res;
    }
};

以上是关于剑指Offer面试题56 - II. 数组中数字出现的次数 II的主要内容,如果未能解决你的问题,请参考以下文章

乱序版 ● 剑指offer每日算法题打卡题解——位运算 (题号56)

《剑指offer》第五十六题II:数组中唯一只出现一次的数字

算法leetcode剑指 Offer 56 - II. 数组中数字出现的次数 II(多语言实现)

算法leetcode剑指 Offer 56 - II. 数组中数字出现的次数 II(多语言实现)

剑指 Offer 56 - I 至 56 - II 数组中数字出现的次数 I && II 题解

剑指 Offer 56 - I 至 56 - II 数组中数字出现的次数 I && II 题解