前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >只出现一次的数字 II

只出现一次的数字 II

作者头像
狼啸风云
发布2023-12-19 10:06:03
910
发布2023-12-19 10:06:03
举报

给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。

你必须设计并实现线性时间复杂度的算法且使用常数级空间来解决此问题。

示例 1:

代码语言:javascript
复制
输入:nums = [2,2,3,2]
输出:3

示例 2:

代码语言:javascript
复制
输入:nums = [0,1,0,1,0,1,99]
输出:99

思路与算法

我们可以使用哈希映射统计数组中每个元素的出现次数。对于哈希映射中的每个键值对,键表示一个元素,值表示其出现的次数。

在统计完成后,我们遍历哈希映射即可找出只出现一次的元素。

代码语言:javascript
复制
class Solution {
public:
    int singleNumber(vector<int>& nums) {
        unordered_map<int, int> freq;
        for (int num: nums) {
            ++freq[num];
        }
        int ans = 0;
        for (auto [num, occ]: freq) {
            if (occ == 1) {
                ans = num;
                break;
            }
        }
        return ans;
    }
};

复杂度分析

时间复杂度:

O(n)
O(n)

,其中

n
n

是数组的长度。

空间复杂度:

O(n)
O(n)

。哈希映射中包含最多

\lfloor n/3 \rfloor + 1
\lfloor n/3 \rfloor + 1

个元素,即需要的空间为

O(n)
O(n)

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-12-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档