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

中国菲律宾冲突岛屿优化大师怎么提交作业

中国菲律宾冲突岛屿,优化大师怎么提交作业,手机版网站怎样做推广,公司起名字大全免费四字力扣hot100中并没有单独的一章讲排序的,但是一些重要的排序方法还是需要掌握的,比如快排和归并。很多使用堆能解决的问题,快排也可以解决。经典的就是第K大问题。快排: class Solution:def partition(self, nums, left, right):&…
  • 力扣hot100中并没有单独的一章讲排序的,但是一些重要的排序方法还是需要掌握的,比如快排和归并。
  • 很多使用堆能解决的问题,快排也可以解决。经典的就是第K大问题。
  • 快排:
class Solution:def partition(self, nums, left, right):"""划分函数:以nums[right]为基准,返回基准值的正确位置索引"""pivot = nums[right]i = left - 1  # 指向小于基准的子数组末尾for j in range(left, right):if nums[j] <= pivot:i += 1nums[i], nums[j] = nums[j], nums[i]  # 将小元素交换到左侧nums[i+1], nums[right] = nums[right], nums[i+1]  # 基准归位return i + 1def topk_split(self, nums, k, left, right):"""快速选择算法核心:找到第k小元素的位置后停止递归"""if left < right:# 注意必须添加 self. 调用类方法index = self.partition(nums, left, right)if index == k:return  # 找到目标位置,终止递归elif index < k:self.topk_split(nums, k, index+1, right)  # 处理右半部分else:self.topk_split(nums, k, left, index-1)  # 处理左半部分#获得前k小的数def topk_smalls(nums, k):topk_split(nums, k, 0, len(nums)-1)return nums[:k]#获得前k大的数 def topk_larges(nums, k):#parttion是按从小到大划分的,如果让index左边为前n-k个小的数,则index右边为前k个大的数topk_split(nums, len(nums)-k, 0, len(nums)-1) #把k换成len(nums)-kreturn nums[len(nums)-k:] 

一、215. 数组中的第K个最大元素

在这里插入图片描述

  • 思路:经典的快排和堆的题目
  • 代码1:快排(这道题单纯使用快排无法ak)
class Solution:def findKthLargest(self, nums, k):def quick_sort(nums, k):pivot = random.choice(nums)big, equal, small = [], [], []for num in nums:if num > pivot:big.append(num)elif num < pivot:small.append(num)else:equal.append(num)if k <= len(big):                  # 第 k 大元素在 big 中,递归划分return quick_sort(big, k)if k > len(nums)-len(small):       # 第 k 大元素在 small 中,递归划分return quick_sort(small, k-len(nums)+len(small))return pivot                       # 第 k 大元素在 equal 中,直接返回 pivotreturn quick_sort(nums, k)
  • 代码2:堆
class Solution:def findKthLargest(self, nums: List[int], k: int) -> int:pq = []   # 将数组加入小顶堆,堆中维护当前值最大的k个数for num in nums:heapq.heappush(pq, num) # 当前元素入堆if len(pq) > k:heapq.heappop(pq)   # 堆中元素超过k个,弹出最小的那个return pq[0]    # 最后堆顶的即为第k大的数

二、347. 前 K 个高频元素

在这里插入图片描述

  • 思路:
    用字典保存每个数字出现次数,最后排序key
  • 代码:
class Solution:def topKFrequent(self, nums: List[int], k: int) -> List[int]:# 使用 defaultdict 统计每个元素出现的次数coll_dea = collections.defaultdict(int)for i in nums:coll_dea[i] += 1# 按频率排序(从高到低),然后取前 k 个元素sorted_items = sorted(coll_dea.items(), key=lambda x: x[1], reverse=True)ans = [item[0] for item in sorted_items[:k]]  # 提取前 k 个元素的值return ans
http://www.dtcms.com/wzjs/355777.html

相关文章:

  • wordpress 公众号采集器河南网站优化排名
  • wordpress同步腾讯微博5年网站seo优化公司
  • 成都网站设计师陕西整站关键词自然排名优化
  • icon psd下载网站安卓内核级优化神器
  • 重庆网站推广优化游戏代理是怎么赚钱的如何代理游戏
  • 建设国际互联网网站百度竞价个人开户
  • 医疗器械查询网站更换服务器对seo的影响
  • 重庆有效的网站推广观看b站的广告网站平台
  • 大连百度推广优化爱站网seo培训
  • 网页设计与网站开发第三版课后答案电话号码宣传广告
  • 在网站里怎么做图片超链接百度网址大全怎么设为主页
  • 杭州鼎易科技做网站太坑网络推广公司深圳
  • 怎么做国外游戏下载网站百度新闻头条新闻
  • 中山网站建设技术西安seo服务培训
  • 律师论坛网站模板app有哪些推广方式
  • 幻灯片网站源码怎么在网络上推广
  • 网站的制作百度关键词权重查询
  • 万维网域名注册网站百度网
  • 网站前台设计方案seo竞价培训
  • 北京网站建设技术部网络营销方案案例范文
  • 做php网站用的软件沈阳百度推广优化
  • 做企业竞争模拟的网站爱站网长尾关键词挖掘工具
  • 网站建站图片抖音推广方案
  • 做物流网站有哪些内容武汉刚刚发生的新闻
  • 网站建设中网站需求分析报告功能自己理解重庆网站排名
  • 网站建设需要哪些功能seo优化是做什么的
  • 成都科技网站建设电软件开发网站
  • 专门卖建筑材料的网站app营销策略有哪些
  • 衡水网站建厦门关键词排名优化
  • 做网站哪些公司好小学生摘抄新闻