尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

2026-06-22:不同频率的最小数对。用go语言,给定一个整数数组 nums,你需要从中找到两个不同的数 x 和 y,要求 x 比 y 小,而且它们在数组里出现的次数不一样。 在所有符合条件的组合

2026-06-22:不同频率的最小数对。用go语言,给定一个整数数组 nums,你需要从中找到两个不同的数 x 和 y,要求 x 比 y 小,而且它们在数组里出现的次数不一样。 在所有符合条件的组合
📅 发布时间:2026/6/23 6:28:23

2026-06-22:不同频率的最小数对。用go语言,给定一个整数数组 nums,你需要从中找到两个不同的数 x 和 y,要求 x 比 y 小,而且它们在数组里出现的次数不一样。

在所有符合条件的组合里,先优先选择 x 尽可能小的那一组;如果有多组的 x 一样,再选择 y 尽可能小的那一组。

最后返回这两个数组成的数组 [x, y]。

如果根本找不到这样的两个数,就返回 [-1, -1]。

1 <= nums.length <= 100。

1 <= nums[i] <= 100。

输入: nums = [1,1,2,2,3,4]。

输出: [1,3]。

解释:

最小的值是 1,频率为 2。比 1 大且频率与 1 不同的最小值是 3,其频率为 1。因此,答案是 [1, 3]。

题目来自力扣3852。

一、代码完整分步执行过程

步骤1:遍历原数组,统计数字频次、记录全局最小值x候选

  1. 初始化空哈希映射cnt,作用:key=数组数字,value=该数字出现次数;
  2. 初始化变量mn(用来存全局最小数字),赋值为整型最大值,保证任意数组数字都能覆盖它;
  3. 逐个取出数组中每一个元素 x:
    • 将该数字在映射表中的计数 +1,完成频次统计;
    • 对比当前元素和mn,如果当前数字更小,就更新mn;
  4. 遍历结束后得到两个关键信息:
    • cnt:完整记录数组所有不重复数字的出现次数;
    • mn:整个数组里数值最小的数字,也就是我们第一优先级要选的 x;
  5. 取出mn对应的出现次数,存入变量cntMin,即目标 x 的频次。

以示例[1,1,2,2,3,4]举例:

  • 频次映射结果:1:2,2:2,3:1,4:1;
  • 全局最小数字mn = 1,cntMin = 2。

步骤2:遍历频次映射,寻找满足条件的最小y

要求 y 满足两点:① y 的出现次数不等于cntMin;② 后续要保证y > mn;

  1. 初始化变量minY(存储符合频次条件的最小数字),赋值整型最大值;
  2. 遍历频次映射里每一组(数字y,对应频次c):
    • 判断:如果当前数字的频次 c ≠ cntMin(和x频次不一样);
    • 满足频次条件时,对比当前y和minY,若y更小,更新minY;
  3. 本轮遍历结束后,minY是全数组中频次和x不相等的所有数字里数值最小的那一个。

示例遍历过程:

  • y=1,频次2 == cntMin(2),跳过;
  • y=2,频次2 == cntMin(2),跳过;
  • y=3,频次1 ≠ 2,minY更新为3;
  • y=4,频次1 ≠ 2,4比3大,不更新minY;
    最终minY = 3。

步骤3:合法性校验,构造返回结果

  1. 判断minY是否仍等于初始的整型最大值:
    • 等于:代表数组里所有数字的出现频次全部相同,不存在符合要求的数对,返回[-1, -1];
    • 不等于:存在合法y,此时mn < minY天然成立(因为mn是全局最小数字,minY是另一个不同数字),直接返回数组[mn, minY]。

示例中 minY=3 有效,返回[1, 3],和题目输出一致。

边界场景补充逻辑

场景:数组所有数字频次完全一致,例如[5,5,6,6,7,7]

  • mn=5,cntMin=2;
  • 遍历所有y:5、6、7频次全是2,minY保持最大值;
  • 判定无合法数对,返回[-1,-1]。

二、时间复杂度分析

设数组长度为 n,数组中不重复数字的数量为 k(k ≤ n)。

  1. 第一次遍历原数组:循环 n 次,单次哈希读写为 O(1),耗时 O(n);
  2. 第二次遍历频次哈希表:循环 k 次,k最大等于n,耗时 O(n);
    总操作:两段线性遍历,无嵌套循环。
    总时间复杂度:O(n)

三、额外空间复杂度分析

额外开辟的存储空间只有哈希映射cnt,最多存储 k 个键值对,k ≤ n;
其余变量(mn、cntMin、minY)均为常数级固定空间,不随数组长度变化。
总额外空间复杂度:O(n)
(最坏情况数组所有数字互不重复,哈希表存储n组数据)

Go完整代码如下:

packagemainimport("fmt""math")funcminDistinctFreqPair(nums[]int)[]int{cnt:=map[int]int{}mn:=math.MaxIntfor_,x:=rangenums{cnt[x]++mn=min(mn,x)}cntMin:=cnt[mn]minY:=math.MaxIntfory,c:=rangecnt{ifc!=cntMin{minY=min(minY,y)}}ifminY==math.MaxInt{return[]int{-1,-1}}return[]int{mn,minY}}funcmain(){nums:=[]int{1,1,2,2,3,4}result:=minDistinctFreqPair(nums)fmt.Println(result)}

Python完整代码如下:

# -*-coding:utf-8-*-fromtypingimportListimportmathdefmin_distinct_freq_pair(nums:List[int])->List[int]:# 统计频次cnt={}mn=math.infforxinnums:cnt[x]=cnt.get(x,0)+1mn=min(mn,x)# 获取最小值的频次cnt_min=cnt[mn]# 找到频次不等于 cnt_min 的最小值min_y=math.inffory,cincnt.items():ifc!=cnt_min:min_y=min(min_y,y)# 如果没找到,返回 [-1, -1]ifmin_y==math.inf:return[-1,-1]return[mn,min_y]defmain():nums=[1,1,2,2,3,4]result=min_distinct_freq_pair(nums)print(result)if__name__=="__main__":main()

C++完整代码如下:

#include<iostream>#include<vector>#include<unordered_map>#include<climits>usingnamespacestd;vector<int>minDistinctFreqPair(vector<int>&nums){unordered_map<int,int>cnt;intmn=INT_MAX;for(intx:nums){cnt[x]++;mn=min(mn,x);}intcntMin=cnt[mn];intminY=INT_MAX;for(auto&p:cnt){inty=p.first;intc=p.second;if(c!=cntMin){minY=min(minY,y);}}if(minY==INT_MAX){return{-1,-1};}return{mn,minY};}intmain(){vector<int>nums={1,1,2,2,3,4};vector<int>result=minDistinctFreqPair(nums);cout<<"["<<result[0]<<", "<<result[1]<<"]"<<endl;return0;}

相关新闻

  • DLSS Swapper完全指南:如何一键优化NVIDIA显卡游戏性能
  • 2025大语言模型生产实践:从推理优化到GRPO对齐的全栈落地
  • 鸡西市2026年本地黄金回收靠谱门店 白银回收+铂金回收优选门店汇总及电话地址指南TOP5排行榜推荐 - 大熊猫898989

最新新闻

  • 如何从金融数据迷雾中突围?yfinance:重新定义Python金融数据分析
  • 北京沙发翻新全攻略(2026最新) - 我叫一
  • Gemini 3 Flash:企业级AI规模化落地的确定性引擎
  • NLP基础(RNN,LSTM,GRU)
  • 鸿蒙 Next 同城上门收纳师 App 开发实战:服务展示 + 预约系统 + 技能标签
  • aqtoolkit入门到精通:从安装到高级功能全解析

日新闻

  • Arduino-ESP32项目深度解析:解锁隐藏芯片支持与架构演进
  • 2026年 系统窗厂家/品牌推荐榜单:隔音系统窗+高端系统门窗的核心优势与选购指南 - 品牌发掘
  • NVBench:首个双语非言语发声语音合成评测基准详解与实践

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号