天博官网(TBSports) 2026-06-15: 频率唯一的第一个元素。用go说话, 从左到右扫描数组

发布日期:2026-06-15 21:13    点击次数:86

天博官网(TBSports) 2026-06-15: 频率唯一的第一个元素。用go说话, 从左到右扫描数组

2026-06-15:频率唯一的第一个元素。用go说话,从左到右扫描数组,统计每个元素出现的次数。对每个元素判断它的出现频率是否与其他元素不同:也即是它的出现次数在通盘元素中是唯一的那种。找到起首骄气这种“频率唯一”的元素并复返它;要是莫得任何元素骄气要求,则复返 -1。

1

1

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

输出: 30。

讲解:

20 出现了 1 次。

10 出现了 1 次。

30 出现了 2 次。

30 的出现频率是唯一的,因为莫得其他整数恰巧出现 2 次。

题目来独力扣3843。

一、合座解题分步详备过程

纪律1:遍历原数组,统计每个数字的出现频次

1. 启动化一个键为数组元素、值为出现次数的哈希映射 cnt,用于纪录每个数字出现若干次。

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

• 取出刻下数字,去哈希映掷中查找该数字对应的计数;

• 若该数字第一次出现,映射内默许计数为0,践诺计数+1;若已存在则径直在原有计数基础上+1;

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

• 20:出现1次

• 10:出现1次

• 30:出现2次

纪律2:统计「频次的频次」,纪录每种出现次数有若干个数字

1. 创建数组 cc,数组长度等于原数组长度+1。原因:一个数字最多完好铺满通盘数组,最大出现次数不会罕原谅数组长度,数组下标不错径直代表“出现次数”,数组存储值代表“有若干个数字领有该出现次数”。

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

• 把刻下计数值手眼下标,对应 cc 数组位置的值 +1;含义是:领有该出现次数的数字数目增多一个。

3. 示例遍历后 cc 数组要害位置限度:

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

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

其余下标数值均为0。

纪律3:再次从左到右遍历原数组,寻找第一个频率唯一的数字

1. 再行重新按法例扫描原始输入数组,保证骄气“第一个”的要求;

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

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

• 若读取限度等于1,确认刻下数字的出现次数是全局惟一份,莫得其他数字和它出现次数换取,顺应题目要求;

• 坐窝径直复返刻下数字,绝交沿路过过,天博官网(TBSports)不再链接遍历;

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. 第一次遍历原数组统计频次:数组长度为n,技能复杂度 ;

2. 遍历哈希映射统计频次的频次:哈希映掷中键的数目最多为n(所稀有字互不重迭),最坏技能复杂度 ;

3. 第二次遍历原数组查找盘算推算元素:数组长度n,技能复杂度 ;

三段操作纪律串行践诺,相加后总技能复杂度:。

三、特殊空间复杂度分析

1. 哈希映射cnt:最坏情况所稀有字不重迭,存储n个键值对,占用 ;

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++完好代码如下:

#include

#include

#include

int firstUniqueFreq(std::vector& nums) {

std::unordered_map cnt;

for (int x : nums) {

kaiyun开云中国2026世界杯官网入口

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

return0;

}

咱们确信东谈主工智能为平凡东谈主提供了一种“增强器具”,并用功于于共享全意见的AI常识。在这里,您不错找到最新的AI科普著作、器具评测、擢升后果的诡秘以及行业细察。

宽饶祥和“福大大架构师逐日一题”天博官网(TBSports),发音信可获取口试辛勤,让AI助力您的未来发展。



 



    Copyright © 1998-2026 天博体育(TBSports)官方网站™版权所有

    bjhuboshi.com备案号 备案号: 

    技术支持:®天博体育(TBSports) RSS地图 HTML地图