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

长沙企业网站建设品牌资源网官网

长沙企业网站建设品牌,资源网官网,网络推广营销策划方案,ui设计在线网站问题描述 在未排序的数组中找到第k个最大的元素。请注意,你需要找的是数组排序后的第k个最大的元素,而不是第k个不同的元素。 解题思路 解决这个问题有多种方法,下面是几种常见的解题策略: 排序后选择: 将数组排序&#xff0c…
问题描述

在未排序的数组中找到第k个最大的元素。请注意,你需要找的是数组排序后的第k个最大的元素,而不是第k个不同的元素。

解题思路

解决这个问题有多种方法,下面是几种常见的解题策略:

  1. 排序后选择: 将数组排序,然后选择第len(array) - k位置上的元素。
  2. 优先队列(最小堆): 使用一个大小为k的最小堆,遍历数组维护堆的大小为k,堆顶即为第k个最大元素。
  3. 快速选择(QuickSelect): 快速选择算法是快速排序的变体,用于找到未排序数组中第k个最大的元素。
代码示例
排序后选择
class Solution:def findKthLargest(self, nums, k):nums.sort()return nums[-k]

这种方法的时间复杂度为O(NlogN),空间复杂度为O(1)(如果使用的是原地排序算法)。

优先队列(最小堆)
import heapqclass Solution:def findKthLargest(self, nums, k):heap = []for num in nums:heapq.heappush(heap, num)if len(heap) > k:heapq.heappop(heap)return heap[0]

这种方法的时间复杂度为O(NlogK),空间复杂度为O(K)。

快速选择(QuickSelect)
class Solution:def findKthLargest(self, nums, k):k = len(nums) - kdef quickselect(l, r):pivot, p = nums[r], lfor i in range(l, r):if nums[i] <= pivot:nums[p], nums[i] = nums[i], nums[p]p += 1nums[p], nums[r] = nums[r], nums[p]if p > k: return quickselect(l, p - 1)if p < k: return quickselect(p + 1, r)return nums[p]return quickselect(0, len(nums) - 1)
int partition(vector<int>& nums,int left,int right)
{int key = nums[left];while(left < right){while(left < right and nums[right] >= key ){right--;}nums[left] = nums[right]while(left < right and nums[left] <= key ){left++;}nums[right] = nums[left]}nums[left] = key; return left;  }int findk(vector<int>& nums)
{random_shuffle(nums.begin(),nums.end());int n = nums.size();int left = 0,rihgt = n-1;while(True){int p = partition(nums,left,right);if(p == n-k){return nums[p];}else if(p > n-k){right = p-1;}else{left = p +1;}}return -1;
}

 

快速选择的平均时间复杂度为O(N),最坏情况下的时间复杂度为O(N^2),空间复杂度为O(1)。

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

相关文章:

  • 网站设计开户网站建设流程发布网站和网页制作
  • 电商网站开发模板网站快速排名服务商
  • 专业网站建设人工智能研发东莞建设网官方网站首页
  • 特级a做爰网站论坛怎样发帖推广
  • 引流网站建设xml文件里做网站超链接
  • 安全的集团网站建设智能建站的优势和不足
  • 沈阳做网站有名公司做网站head.htm
  • 成都百度网站制作贵阳中企动力做的网站
  • 一站式的手机网站制作网站建设 seo模块
  • 网站轮播代码最新网站建设软件有哪些
  • 怎么建立网站免费的武夷山住房和城乡建设局网站
  • 做外贸没有网站需要什么条件手机网站菜单设计
  • 网站建设费 广告附近有没有学电脑培训的
  • wordpress to go宜昌网站seo收费
  • 免费做简历下载的网站百度地图 添加到网站
  • 西城网站制作公司网页设计有哪些
  • 搜狐快站网上合同
  • 网站建站前期准备工作有创意营销型网站建设
  • 西安哪家网站做的好wordpress cdn无作用
  • 珠海住建网站郑州小程序制作流程及费用
  • 免费在线做高考试题的网站成都最新消息今天
  • 三水网站建设公司建设机械网站制作
  • 单县住房和城乡建设局网站近三天时政热点
  • asp.net 网站安装包网站被黑的表现
  • 小公司做网站的好处用jsp做的网站源代码下载
  • 嘉兴做网站的服务好的徐州网站建设
  • 山西省建设厅招标网站首页品牌便宜网站建设
  • 用python做网站google海外版
  • 怎么做淘宝客网站备案wordpress yum
  • 怎么上国外网站企业年报网上申报入口免费官方