网易首页 > 网易号 > 正文 申请入驻

2026-06-15:频率唯一的第一个元素。用go语言,从左到右扫描数组,统计每个元素出现的次数。对每个元素判断它的出现频率是否与其他元素不

0
分享至

2026-06-15:频率唯一的第一个元素。用go语言,从左到右扫描数组,统计每个元素出现的次数。对每个元素判断它的出现频率是否与其他元素不同:也就是它的出现次数在所有元素中是唯一的那种。找到最先满足这种“频率唯一”的元素并返回它;如果没有任何元素满足条件,则返回 -1。

1 <= nums.length <= 100000。

1 <= nums[i] <= 100000。

输入: nums = [20,10,30,30]。

输出: 30。

解释:

20 出现了 1 次。

10 出现了 1 次。

30 出现了 2 次。

30 的出现频率是唯一的,因为没有其他整数恰好出现 2 次。

题目来自力扣3843。

一、整体解题分步详细过程 步骤1:遍历原数组,统计每个数字的出现频次

  1. 1. 初始化一个键为数组元素、值为出现次数的哈希映射cnt,用于记录每个数字出现多少次。

  2. 2. 从左到右完整遍历输入数组中每一个数字:

  • • 取出当前数字,去哈希映射中查找该数字对应的计数;

  • • 若该数字第一次出现,映射内默认计数为0,执行计数+1;若已存在则直接在原有计数基础上+1;

3. 以示例输入[20,10,30,30]举例,遍历完成后哈希映射存储结果:

  • • 20:出现1次

  • • 10:出现1次

  • • 30:出现2次

步骤2:统计「频次的频次」,记录每种出现次数有多少个数字
  1. 1. 创建数组cc,数组长度等于原数组长度+1。原因:一个数字最多完整铺满整个数组,最大出现次数不会超过原数组长度,数组下标可以直接代表“出现次数”,数组存储值代表“有多少个数字拥有该出现次数”。

  2. 2. 遍历上一步得到的频次哈希映射cnt的每一个计数值(也就是各个数字的出现次数):

  • • 把当前计数值作为下标,对应cc数组位置的值 +1;含义是:拥有该出现次数的数字数量增加一个。

3. 示例遍历后cc数组关键位置结果:

  • • 下标1(出现1次):对应值为2,代表有2个数字(20、10)只出现1次;

  • • 下标2(出现2次):对应值为1,代表仅有1个数字(30)出现2次;
    其余下标数值均为0。

步骤3:再次从左到右遍历原数组,寻找第一个频率唯一的数字
  1. 1. 重新从头按顺序扫描原始输入数组,保证满足“第一个”的要求;

  2. 2. 对当前遍历到的数字,先去哈希映射cnt取出它的出现次数;

  3. 3. 用这个出现次数作为下标读取cc数组的值:

  • • 若读取结果等于1,说明当前数字的出现次数是全局独一份,没有其他数字和它出现次数相同,符合题目要求;

  • • 立刻直接返回当前数字,终止全部流程,不再继续遍历;

4. 示例逐元素校验过程:

  • • 第一个数字20:出现次数1,cc[1]=2,不等于1,不满足;

  • • 第二个数字10:出现次数1,cc[1]=2,不等于1,不满足;

  • • 第三个数字30:出现次数2,cc[2]=1,等于1,满足条件,直接返回30;

5. 若完整遍历完整个数组,所有数字的出现次数都存在重复(所有cc[次数]>1),说明不存在频率唯一的元素,最终返回-1。

二、时间复杂度分析

  1. 1. 第一次遍历原数组统计频次:数组长度为n,时间复杂度 ;

  2. 2. 遍历哈希映射统计频次的频次:哈希映射中键的数量最多为n(所有数字互不重复),最坏时间复杂度 ;

  3. 3. 第二次遍历原数组查找目标元素:数组长度n,时间复杂度 ;
    三段操作依次串行执行,相加后总时间复杂度: 。

三、额外空间复杂度分析
  1. 1. 哈希映射cnt:最坏情况所有数字不重复,存储n个键值对,占用 ;

  2. 2. 数组cc:长度固定为 ,占用 ;
    无其他随输入规模线性增长的临时存储,总额外空间复杂度: 。

Go完整代码如下:

package main

import (
"fmt"
)

func firstUniqueFreq(nums []int)int {
cnt := map[int]int{}
for _, x := range nums {
cnt[x]++
}

cc := make([]int, len(nums)+1)
for _, c := range cnt {
cc[c]++
}

for _, x := range nums {
if cc[cnt[x]] == 1 {
return x
}
}
return-1
}

func main() {
nums := []int{20, 10, 30, 30}
result := firstUniqueFreq(nums)
fmt.Println(result)
}

Python完整代码如下:

# -*-coding:utf-8-*-

def first_unique_freq(nums):
# Count frequency of each number
cnt = {}
for x in nums:
cnt[x] = cnt.get(x, 0) + 1
# Count how many numbers have each frequency
cc = [0] * (len(nums) + 1)
for c in cnt.values():
cc[c] += 1
# Find the first number whose frequency appears only once
for x in nums:
if cc[cnt[x]] == 1:
return x
return-1

def main():
nums = [20, 10, 30, 30]
result = first_unique_freq(nums)
print(result)

if __name__ == "__main__":
main()

C++完整代码如下:

  




int firstUniqueFreq(std::vector& nums) {
std::unordered_map cnt;
for (int x : nums) {
cnt[x]++;
}

std::vector cc(nums.size() + 1, 0);
for (const auto& pair : cnt) {
cc[pair.second]++;
}

for (int x : nums) {
if (cc[cnt[x]] == 1) {
return x;
}
}
return-1;
}

int main() {
std::vector nums = {20, 10, 30, 30};
int result = firstUniqueFreq(nums);
std::cout << result << std::endl;
return0;
}

我们相信人工智能为普通人提供了一种“增强工具”,并致力于分享全方位的AI知识。在这里,您可以找到最新的AI科普文章、工具评测、提升效率的秘籍以及行业洞察。 欢迎关注“福大大架构师每日一题”,发消息可获得面试资料,让AI助力您的未来发展。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
长和系5年从英国套现超3500亿,别人还没看明白,他们为什么先跑了?

长和系5年从英国套现超3500亿,别人还没看明白,他们为什么先跑了?

z千年历史老号
2026-08-11 08:01:08
凯莉·克拉克森遇大风裙摆险掀翻,44岁自嘲“胸太小不会走光”引爆笑

凯莉·克拉克森遇大风裙摆险掀翻,44岁自嘲“胸太小不会走光”引爆笑

我是一个养虾人
2026-08-10 23:05:59
南太行失联女孩已找到!面部损毁身体腐烂,物品散落现场疑点重重

南太行失联女孩已找到!面部损毁身体腐烂,物品散落现场疑点重重

北纬的咖啡豆
2026-08-11 09:27:28
赢得太惊险了!覃予萱3-2逆转伊藤美诚晋级欧洲大满贯32强!

赢得太惊险了!覃予萱3-2逆转伊藤美诚晋级欧洲大满贯32强!

篮球资讯达人
2026-08-11 02:40:42
长途大巴和绿皮火车,突然“起死回生”,释放了什么信号?

长途大巴和绿皮火车,突然“起死回生”,释放了什么信号?

互联网思维
2026-08-12 01:10:29
赵心童5-6张安达,诞生4个不可思议和2个事实,观众素质真不行

赵心童5-6张安达,诞生4个不可思议和2个事实,观众素质真不行

南海浪花
2026-08-12 01:13:11
一个前美军中将的脖子,怎么就扯下了这个时代的信任遮羞布?

一个前美军中将的脖子,怎么就扯下了这个时代的信任遮羞布?

刻面
2026-08-10 15:37:02
NBA3消息:3年5220万美元重磅续约,“胡子登‌”空降米切尔婚礼

NBA3消息:3年5220万美元重磅续约,“胡子登‌”空降米切尔婚礼

宝哥精彩赛事
2026-08-12 01:41:19
战略合作!江苏省委书记、省长会见中国大唐集团董事长、总经理

战略合作!江苏省委书记、省长会见中国大唐集团董事长、总经理

政知新媒体
2026-08-11 23:03:24
男童被巨浪卷走后续,官媒怒批家属,当地不敢救,救了也必死无疑

男童被巨浪卷走后续,官媒怒批家属,当地不敢救,救了也必死无疑

旧史新谭
2026-08-10 19:44:36
再这样下去,中国烟草很可能会出问题,原因很现实

再这样下去,中国烟草很可能会出问题,原因很现实

亿通电子游戏
2026-08-11 04:09:58
46岁吉赛尔·邦辰罕见晒18个月儿子举哑铃模仿健身

46岁吉赛尔·邦辰罕见晒18个月儿子举哑铃模仿健身

娱圈观察员
2026-08-12 02:32:38
DeepSeek和豆包用了半年,我果断卸载了其中一个,原因太真实!

DeepSeek和豆包用了半年,我果断卸载了其中一个,原因太真实!

侃故事的阿庆
2026-08-11 06:56:01
中国的“第一仗”,可能要在黄岩岛打响了!

中国的“第一仗”,可能要在黄岩岛打响了!

安安说
2026-08-11 11:54:03
当年一针疫苗没打的人,如今结局太意外!身边藏着500万硬核狠人

当年一针疫苗没打的人,如今结局太意外!身边藏着500万硬核狠人

白米饭怎么吃
2026-08-11 20:28:34
CCTV直播!12日赛程:蒯曼1日3赛,王曼昱双打首秀,张本兄妹出战

CCTV直播!12日赛程:蒯曼1日3赛,王曼昱双打首秀,张本兄妹出战

梁蜱爱玩车
2026-08-12 05:00:34
47岁严宽晒旧房:24年前买房8000一平,5年还清房贷,可惜早卖了

47岁严宽晒旧房:24年前买房8000一平,5年还清房贷,可惜早卖了

艺能八卦局
2026-08-11 13:00:36
油价大跌“超1.57元/升”,连降3次的油价,8月14日或再大降,今年第5次“超500元/吨”大跌中!

油价大跌“超1.57元/升”,连降3次的油价,8月14日或再大降,今年第5次“超500元/吨”大跌中!

油价早知道
2026-08-10 08:56:36
加拿大咖啡品牌CEO面临终身监禁:被指控将9岁亲生女儿淹死在浅水塘

加拿大咖啡品牌CEO面临终身监禁:被指控将9岁亲生女儿淹死在浅水塘

红星新闻
2026-08-11 21:24:56
农村有一个怪象,有钱有本事的人,不仅过年不回家,就连村里的红白喜事都不参与了,这是为啥?

农村有一个怪象,有钱有本事的人,不仅过年不回家,就连村里的红白喜事都不参与了,这是为啥?

小谈食刻美食
2026-08-11 09:33:48
2026-08-12 09:12:49
moonfdd incentive-icons
moonfdd
福大大架构师每日一题
1388文章数 79关注度
往期回顾 全部

科技要闻

AI大战变天:扎克伯格突然回头

头条要闻

美军MH-60直升机向商船开火:发射两枚"地狱火"导弹

头条要闻

美军MH-60直升机向商船开火:发射两枚"地狱火"导弹

体育要闻

NBA老顽童,抽着大麻喝着小酒告别了

娱乐要闻

“雅典娜”确认被害 细节令人发指!

财经要闻

李嘉诚,再一次大撤退!他嗅到了什么?

汽车要闻

闪充/天神之眼B/云辇-C 2027款海豹06售9.99万元起

态度原创

旅游
健康
亲子
公开课
军事航空

旅游要闻

快快评|景区“拦路收费”难道上瘾了?

心血管专家破解猝死八大谣言

亲子要闻

一个沿用了近90年的疾病名称改了

公开课

李玫瑾:为什么性格比能力更重要?

军事要闻

通过“毕业大考” 湖北舰“持证上岗”

无障碍浏览 进入关怀版