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

网站建设图文教程云南省建设系统网站

网站建设图文教程,云南省建设系统网站,做静态网站的参考文献,中国亚马逊官网题目 给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。 请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 1: 输入: [3,2,1,5,6,4…

题目

给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。

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

你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。

示例 1:

输入: [3,2,1,5,6,4],k = 2
输出: 5

示例 2:

输入: [3,2,3,1,2,4,5,5,6], 
k = 4
输出: 4

提示:

  • 1 <= k <= nums.length <= 10^5
  • -10^4 <= nums[i] <= 10^4

解答

源代码

class Solution {Random rand = new Random();public int findKthLargest(int[] nums, int k) {return quickSelect(nums, k, 0, nums.length - 1);}public int quickSelect(int[] nums, int k, int left, int right) {int index = rand.nextInt(right - left + 1) + left;// 目标值int target = nums[index];// 因为在之后交换元素中,nums[left]的值会被覆盖,所以这里把nums[index]记为nums[left]的值nums[index] = nums[left];int i = left, j = right;while (i < j) {while (i < j && nums[j] <= target) {j--;}nums[i] = nums[j];while (i < j && nums[i] >= target) {i++;}nums[j] = nums[i];}// 此时nums[i]前的元素都比目标值大,nums[i]之后的元素都比目标值小nums[i] = target;if (i == k - 1) {return nums[i];} else if (i < k - 1) {return quickSelect(nums, k, i + 1, right);} else {return quickSelect(nums, k, left, i - 1);}}
}

总结

这道题写得我好痛苦……因为后面的测试案例有极端情况,所以一定要用到随机,又因为用到了随机,所以和排序算法不是完全一样,不能直接进行交换,否则最后相遇的那个数和目标值交换后的数组不一定是合法的(目标值前面都是大于它的数,后面都是小于它的数)。

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

相关文章:

  • 网站的横幅怎么做网站是否备案怎么查询
  • 网站群建设费用配置 tomcat 做网站
  • 网站开发包括网站过程百度热议排名软件
  • 营销型国外网站wordpress 能做哪些
  • 六安哪家公司做网站好wordpress 密码在哪文件
  • 书店网站html模板设计一个官方网站推广广告
  • 河南省住房建设厅网站唐山网站建设模板
  • 网站运营策划书深圳做app网站的公司
  • 用华为云建立Wordpress网站58同城泉州网站建设
  • 网站膜拜销售网站上怎么做动画广告视频下载
  • 泉州网站推广排名wordpress 不显示主题
  • 成都 做网站个人或主题网站建设
  • 做智能网站软件公司营销网络
  • 成都网站公司建设网址链接怎么做出来的
  • 浦江县建设局网站代驾app软件开发公司
  • 网站解封原因成都做企业网站
  • 网站建设的目标的意思cms网站
  • 手机建网站教程wordpress _x
  • 网站建设 笔记赤峰市住房和城乡建设局官方网站
  • 青海省高等级公路建设管理局网站永康网站建设的公司
  • 免费网站推广群发软件asia域名的网站
  • 网页制作期末作业网站html项目模板下载
  • 建设一个网站可以做什么分类建站cms系统
  • 山西推广型网站开发琼筑网站是哪家做的
  • 做链家房产的网站怎么做的搜索引擎平台
  • wordpress用户聊天中山网站seo
  • 网站建设大数据服务案例哈尔滨市延寿建设局网站
  • 凡科网小程序太原seo
  • 廊坊哪些公司做网站西宁网站建设开发
  • 手机端网站开发视频教程厦门网站建设多少钱