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

惠州市建设厅网站做家教需要什么哪个网站的会员

惠州市建设厅网站,做家教需要什么哪个网站的会员,网站建设站长相关专业,设计网页布局的常用方法有哪三种题目描述 给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。 思路 统计元素的频率:使用 collections.Counter 来统计数组中每个元素出现的频率获取前 k 个频率最高的元素 优先队列(堆…

题目描述

给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。

思路

  1. 统计元素的频率:使用 collections.Counter 来统计数组中每个元素出现的频率
  2. 获取前 k 个频率最高的元素
    优先队列(堆):一个常见的方法是使用 最小堆(heapq)。最小堆能够在 O(log n) 的时间复杂度内进行插入和删除操作。我们可以将元素和频率作为元组存入堆中。
    通过堆来获取频率前 k 高的元素。

代码

from collections import Counter
import heapqclass Solution:def topKFrequent(self, nums: List[int], k: int) -> List[int]:# 1、统计频数count = Counter(nums)# 2、使用堆来寻找频率前k的元素# heapq.nlargest 返回的是一个包含元组的列表# 通过列表推导式 [item[0] for item in ...] 提取出频率前 k 高的元素# count.items() 返回一个元组的列表,每个元组包含一个元素及其频率。# 参数 key=lambda x: x[1] 意味根据元组的第二个元素(即元素的频率)进行排序return [item[0] for item in heapq.nlargest(k, count.items(), key = lambda x : x[1])]

总结

通过 heapq.nlargest 可以很方便地找到前 k 大的元素,堆的大小始终保持为 k。
通过使用堆来处理问题,而不是直接排序,能够避免 O(n log n) 的时间复杂度,提升到 O(n log k),其中 k 通常比 n 要小很多,因此能够有效提高效率。

堆的基础知识

堆是一种特殊的二叉树,但它不仅仅是任何树——它具有一个特定的属性:
最大堆:在最大堆中,每个父节点的值都大于或等于其子节点的值。因此,最大元素总是位于根节点。
最小堆:在最小堆中,每个父节点的值都小于或等于其子节点的值。因此,最小元素总是位于根节点
堆排序(以最大堆为例)主要分为两个步骤:

  1. 我们从最后一个非叶子节点(至少有一个子节点的节点)开始,并对其进行堆化。堆化意味着确保以该节点为根的子树遵循堆属性。重复这个过程,直到整个数组变成一个有效的最大堆。
  2. 从堆中提取最大元素:
    构建最大堆后,最大的元素位于堆的根部。
    我们将根元素(最大元素)与数组的最后一个元素交换。
    然后,我们从堆中移除最后一个元素(因为它已经在正确的位置上)。
    交换后,我们再次对根进行堆化,以恢复最大堆属性,因此下一个最大元素移动到根部。
    我们重复这个过程,直到没有更多的元素需要堆化。

堆在本题情景下的巧妙应用:避免 O(n log n) 的时间复杂度,提升到 O(n log k)

最小堆的关键属性是它可以在根节点保持最小元素,这允许我们高效地添加新元素和移除最小元素。
要找到 k 个最大的元素:

  1. 遍历大小为 n 的数组。对于每个元素,将其插入堆中。
  2. 如果堆超过 k 个元素,移除根节点(最小元素)。
  3. 插入每个元素需要 O(log k) 时间。对所有 n 元素执行此操作的时间复杂度为 O(n log k)。
http://www.dtcms.com/wzjs/828785.html

相关文章:

  • 网站页尾模板网站备案帐号找回
  • 创新的网站制作图片模板
  • 网站做兼容处理怎么设置做管理信息的网站
  • 企业网站用视频做首页企业级网站开发技术
  • 编程一小时网站建网站服务器是什么东西
  • 麻涌网站仿做长沙网站开发长沙网站建设
  • 淘客优惠券网站怎么做如何写网站建设策划案
  • 个人网站 可以做淘宝客吗FPGA毕业设计代做网站
  • 公司域名网站怎样做加入购物车的网站
  • 做旅游网站需要的背景淄博网站排名外包
  • 南京市建设工程交易中心网站怎么在网站里添加cnzz统计
  • 一汽大众网站谁做的深圳福田会展中心近期展会
  • 徐州自助建站模板网络服务器多少钱一台
  • 导购网站怎么推广安卓软件开发app
  • 网站开发公司会计科目在线妇科免费咨询
  • 企业网站开发需求分析wordpress阅读数总是0
  • 苏州专业网站建设设计公司排名域名查询平台
  • 如何做好一个购物网站崇义做网站
  • 企业建站项目开发公司办公电脑申请怎么写
  • 免费开设网站湘潭网站建设优选磐石网络
  • 唐尧文化 网站建设工作总结商城网站建设解决方案
  • 百度商桥怎么和网站推广app的单子都在哪里接的
  • 老年夫妻做爰视频网站做vi的网站
  • 网站篡改搜索引擎js湖北网站备案需要多久
  • 寻花问柳一家专门做男人的网站o2o与网站建设
  • 互联业务登录页 网站asp双语企业网站源码
  • 湖南网站制作公司推荐做冻品海鲜比较大的网站有哪些
  • 外国网站手机dns莱芜市为什么撤了
  • 网站首页制作教程wordpress 中文文档
  • 企业公众号以及网站建设个人网站设计论文下载