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

网站优化招商网站备案负责人照片

网站优化招商,网站备案负责人照片,网页布局代码及效果图,网站建设攵金手指专业LeetCode-347. 前 K 个高频元素【数组 哈希表 分治 桶排序 计数 快速选择 排序 堆(优先队列)】 题目描述:解题思路一:哈希表记录出现次数,然后用最小堆取,因为每次都是弹出最小的,剩下的一定是K…

LeetCode-347. 前 K 个高频元素【数组 哈希表 分治 桶排序 计数 快速选择 排序 堆(优先队列)】

  • 题目描述:
  • 解题思路一:哈希表记录出现次数,然后用最小堆取,因为每次都是弹出最小的,剩下的一定是K个最大的。
  • 解题思路二:直接排序
  • 解题思路三:堆
  • 解题思路三:快速排序

题目描述:

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

示例 1:

输入: nums = [1,1,1,2,2,3], k = 2
输出: [1,2]
示例 2:

输入: nums = [1], k = 1
输出: [1]

提示:

1 <= nums.length <= 105
k 的取值范围是 [1, 数组中不相同的元素的个数]
题目数据保证答案唯一,换句话说,数组中前 k 个高频元素的集合是唯一的

进阶:你所设计算法的时间复杂度 必须 优于 O(n log n) ,其中 n 是数组大小。

解题思路一:哈希表记录出现次数,然后用最小堆取,因为每次都是弹出最小的,剩下的一定是K个最大的。

import heapq # 默认是最小堆
class Solution:def topKFrequent(self, nums: List[int], k: int) -> List[int]:map_ = {}for i in range(len(nums)):map_[nums[i]] = map_.get(nums[i], 0) + 1pri_que = []for key, freq in map_.items():heapq.heappush(pri_que, (freq, key))if len(pri_que) > k: heapq.heappop(pri_que)result = [0] * kfor i in range(k-1, -1, -1):result[i] = heapq.heappop(pri_que)[1]return result

时间复杂度:O(nlogk)
空间复杂度:O(n)

解题思路二:直接排序

class Solution:def topKFrequent(self, nums: List[int], k: int) -> List[int]:count = collections.Counter(nums)return [item[0] for item in count.most_common(k)]

时间复杂度:O(nlogn)
空间复杂度:O(n)

解题思路三:堆

class Solution:def topKFrequent(self, nums: List[int], k: int) -> List[int]:count = collections.Counter(nums)heap = [(val, key) for key, val in count.items()]return [item[1] for item in heapq.nlargest(k, heap)]

时间复杂度:O(nlogn)
空间复杂度:O(n)

解题思路三:快速排序

在这里插入图片描述

class Solution:def topKFrequent(self, nums: List[int], k: int) -> List[int]:count = collections.Counter(nums)num_cnt = list(count.items())topKs = self.findTopK(num_cnt, k, 0, len(num_cnt) - 1)return [item[0] for item in topKs]def findTopK(self, num_cnt, k, low, high):pivot = random.randint(low, high)num_cnt[low], num_cnt[pivot] = num_cnt[pivot], num_cnt[low]base = num_cnt[low][1]i = lowfor j in range(low + 1, high + 1):if num_cnt[j][1] > base:num_cnt[i + 1], num_cnt[j] = num_cnt[j], num_cnt[i + 1]i += 1num_cnt[low], num_cnt[i] = num_cnt[i], num_cnt[low]if i == k - 1:return num_cnt[:k]elif i > k - 1:return self.findTopK(num_cnt, k, low, i - 1)else:return self.findTopK(num_cnt, k, i + 1, high)

时间复杂度:O(n)
空间复杂度:O(n)

http://www.yayakq.cn/news/382047/

相关文章:

  • 做的最好的本地生活网站微信公众号php网站开发
  • 巩义建设网站宁夏建设厅招标网站
  • 定制网站前准备中小微企业查询官网
  • wordpress 防爆破淄博网站制作网页优化
  • 网站在线报名怎么做安阳公司做网站
  • wordpress里的站点标题是什么意思iis 网站目录权限设置
  • 做国际网站怎么发货wordpress淘宝客自动采集
  • 家政网站怎么做苏中建设集团网站网址
  • 江西做网站公司最好的软件开发公司排名
  • 网站对联广告宁波住房与城乡建设部网站
  • 广东网站建设工作手机兼职赚钱
  • 塘下网站建设黄骅市网站建设公司
  • 网站icp备案号南京网站制作服务商
  • 简单网站开发实例汇总制作网页可以用word吗
  • 北京网站开发怎么做越秀免费网站建设
  • 鄂尔多斯做网站的公司爱企查企业信息查询
  • 信誉好的东莞网站建设遵义市双控体系建设网站
  • 网站改版对用户的影响公司网站主机流量30g每月够用吗
  • 网站建设规划建议wordpress贵金属插件
  • 凡科网怎么修改网站重庆哪家公司做网站好
  • 网站建设的公司这个泰安网站优化推广
  • 网站建设费用推荐网络建什么类型的网站访问量比较大
  • 北京城市雕塑建设管理办公室网站东莞市建设公共交易中心网站首页
  • 做网站链接的页面怎么做最牛网站设计公司
  • 网站建设与网页设计课中国做外贸网站有哪些
  • 什么网站可以免费做会计初级三明北京网站建设
  • 网站百度排名优化ui设计教学
  • 教学网站开发背景网站开发技术有哪些
  • 电子商务网站保密协议网站聚合优化
  • 小说网站系统怎么做wordpress 问卷源码