当前位置: 首页 > wzjs >正文

手机优化网站建设php彩票网站建设教程

手机优化网站建设,php彩票网站建设教程,因网站开发需要,合肥软件外包公司1.题目描述 2.思路 (1)这里定义了一个小根堆(最小堆),根据元素的频率从小到大排序。小根堆原理:堆顶是最小值,每次插入或删除操作会保持堆的有序结构(常用二叉堆实现)。 …

1.题目描述

在这里插入图片描述

2.思路

在这里插入图片描述
在这里插入图片描述
(1)这里定义了一个小根堆(最小堆),根据元素的频率从小到大排序。小根堆原理:堆顶是最小值,每次插入或删除操作会保持堆的有序结构(常用二叉堆实现)。
比如,map.get(a) - map.get(b) 表示:
频率小的排在堆顶;
当堆满 k 个元素后,就可以比较新元素与堆顶的大小,进行替换。

(2)这个循环遍历 map 中的所有 key,目的是找出频率前 k 高的元素。

如果堆还没满,直接加入;
如果堆满了,比较当前元素的频率和堆顶元素频率:
当前元素更高,则替换堆顶。
继续例子(k = 2)
map: {1=3, 2=2, 3=1}
按顺序加入:
加入 1,堆 = [1]
加入 2,堆 = [1, 2](根据频率排序,2 的频率低,堆顶是 2)
处理 3(频率 1):
频率小于堆顶 2 → 不加入
最终堆中是 [1, 2]
在这里插入图片描述

🧩 举个例子来直观理解:
(1)输入:nums = [1, 1, 1, 2, 2, 3],k = 2
(2)频率统计结果:map = {1=3, 2=2, 3=1}
维护一个小根堆 pq,大小最多为 2(k=2):
加入 1(频率3)→ pq = [1]
加入 2(频率2)→ pq = [2, 1](按频率排序,堆顶是频率最小的)
尝试加入 3(频率1):
频率 1 < 堆顶 2 的频率 ⇒ 不加入
现在 pq 中是 [2, 1],是频率前 2 高的元素!
取出堆中元素:
int[] result = new int[k];
for (int i = 0; i < k; i++) {
result[i] = pq.remove(); // remove 堆顶元素
}
return result;
虽然 remove() 是按频率从小到大弹出,但我们关心的是内容是这 k 个元素本身是否是频率最高的
它不保证从大到小的顺序(如果你想要排好顺序,可以再排序)
总结这段逻辑:
小根堆始终维护的是「当前频率最高的前 k 个元素」;

取出这些元素即可完成任务;

堆顶是这 k 个元素中最小的,所以我们才用小根堆。

3.代码实现

class Solution {public int[] topKFrequent(int[] nums, int k) {//使用字典,统计每个元素出现的次数,元素为键,元素出现的次数为值HashMap<Integer, Integer> map = new HashMap<>();for (int num : nums) {if(map.containsKey(num)){//如果字典元素在后续遍历的过程中又再次出现,直接次数+1map.put(num, map.get(num) + 1);}else{//如果该字典元素是首次出现。map.put(num, 1);}}//遍历map,用最小堆保存频率最大的k个元素//优先级队列的底层原理就是堆PriorityQueue<Integer> pq = new PriorityQueue<>(new Comparator<Integer>() {public int compare(Integer a, Integer b) {return map.get(a) - map.get(b);  // 出现次数小的排前面(小根堆)}});// 遍历 map 的 key 值for (Integer key : map.keySet()) {if (pq.size() < k) {pq.add(key);  // 队列还未满,直接加入} else if (map.get(key) > map.get(pq.peek())) {pq.remove();      // 弹出堆顶元素(频率最小)pq.add(key);      // 加入当前频率更高的元素}}//取出最小堆的元素int[] result=new int[k];for(int i=0;i<k;i++){result[i]=pq.remove();}return result;//pq.remove() 会返回堆顶元素,并从堆中删除该元素;}
}

文章转载自:

http://gFZAuTvH.mjbnp.cn
http://XxXj1MRh.mjbnp.cn
http://DQajo5x0.mjbnp.cn
http://Eqnp1KiU.mjbnp.cn
http://asibaLlc.mjbnp.cn
http://7fKofg62.mjbnp.cn
http://lsXpfv73.mjbnp.cn
http://rkm5WHU3.mjbnp.cn
http://Gj36HeKL.mjbnp.cn
http://adFEle1d.mjbnp.cn
http://X3OxLtKM.mjbnp.cn
http://JG36stKl.mjbnp.cn
http://xS66Vscr.mjbnp.cn
http://arq4uhio.mjbnp.cn
http://RdSPDFzb.mjbnp.cn
http://dKO4nPJP.mjbnp.cn
http://Tj2ndpUU.mjbnp.cn
http://IIRARpcB.mjbnp.cn
http://p0ffI1dx.mjbnp.cn
http://tfkfYffn.mjbnp.cn
http://cS2DOEkQ.mjbnp.cn
http://sgBWgSjJ.mjbnp.cn
http://aT5rtRuo.mjbnp.cn
http://ykrniGNK.mjbnp.cn
http://z27SIV9b.mjbnp.cn
http://0Wb8VAsU.mjbnp.cn
http://mNFdJt3d.mjbnp.cn
http://4egT1tQz.mjbnp.cn
http://XyjOjUEH.mjbnp.cn
http://D3GE2qu2.mjbnp.cn
http://www.dtcms.com/wzjs/705881.html

相关文章:

  • 贾汪徐州网站开发wordpress太难用了
  • 小米商城网站建设中国500强排行榜
  • 济宁有做企业网站吗济南网页制作设计营销
  • 企业网站建设教程北京住房和城乡建设网官网
  • 杭州网站建设响应式周易八字排盘系统网站建设
  • 成都没有做网站的公司给个免费的网站好人有好报
  • 北京建设监理网站wordpress手机登录跳转页面模板
  • 广东建设报网站电子商务自助建网站
  • 电商网站建设策划天猫网站怎么做
  • 网站建设 中企动力南通建网站平台要多少钱
  • 快速搭建网站框架的工具多媒体设计与制作毕业设计
  • 设计师个人网站模板辽宁网站推广
  • 哈尔滨一个好网站建设如何开展网上营销
  • 影视文化网站建设wordpress会员插件
  • 厦门橄榄网站建设wordpress get tag
  • 盐城市城南建设局网站广州市花都区网站建设公司
  • 单页网站怎么制作教程wordpress改登陆界面
  • ps网站制作教程网页加速器排名
  • 上海外包公司网站建设桂林人才网
  • 商城网站是免费开吗做网站服务器空间
  • 哈尔滨seo网站管理旅游网站界面设计
  • 成都网站公司网站建设网站怎样做移动端
  • 北京网站制作出名 乐云践新开发网站的经济可行性
  • 宣讲家网站 家风建设自己可以学着做网站吗
  • 门户网站建站目标网站建站平台源码
  • 在线字体设计网站商城网站建站系统
  • 做外国购物网站需要交税吗广州最新防疫动态
  • 缔客网络上海响应式网站建设网站所有二级目录
  • 怎么查寻一个网站做的竞价wordpress 2016
  • 深圳市保障房申请网站深圳营销型网站建设优化