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

网站策划书内容不包括什么wordpress安装水煮鱼

网站策划书内容不包括什么,wordpress安装水煮鱼,花色98堂新网名内容与理念,具有品牌的上海网站建设. - 力扣(LeetCode)给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。 请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 你必须设计并实现时间复杂度为 O(n) 的算法解决此问…

. - 力扣(LeetCode)给定整数数组 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 <= 105
  • -104 <= nums[i] <= 104

思路1:基于堆排序的选择方法

排序 - - - 选择排序(简单选择、堆排序)_c#排序中选择排序中的dui排序-CSDN博客

「调整」

        父节点都大于或小于子结点

// 以root为根,调整大根堆void heapAdjust(vector<int>& nums, int root, int heapSize){int i = root;  // i保存根节点下标for(int j = i*2 + 1; j < heapSize; j = i*2+1){// j保存孩子中最大值下标if(j < heapSize - 1 && nums[j] < nums[j+1]){j++;}if(nums[i] >= nums[j]){break;}else{swap(nums[i], nums[j]);i = j;}}}

「建堆」

        将排序码k1,k2,k3,…,kn表示成一棵完全二叉树,然后从第 n/2个排序码(即树的最后一个非终端结点)开始筛选,使由该结点作根结点组成的子二叉树符合堆的定义,然后从第 n/2-1 个排序码重复刚才操作,直到第一个排序码止。

void buildHeap(vector<int>&nums, int heapSize){for(int i = heapSize / 2; i >= 0; i--){heapAdjust(nums, i, heapSize);}}

「删除」

        将堆中第一个结点(二叉树根结点)和最后一个结点的数据进行交换(k1与kn),再将k1~kn-1重新建堆,然后k1和kn-1交换,再将k1~kn-2重新建堆,然后k1和kn-2交换,如此重复下去,每次重新建堆的元素个数不断减1,直到重新建堆的元素个数仅剩一个为止。这时堆排序已经完成,则排序码k1,k2,k3,…,kn已排成一个有序序列。

class Solution {
private:// 以root为根,调整大根堆void heapAdjust(vector<int>& nums, int root, int heapSize){int i = root;  // i保存根节点下标for(int j = i*2 + 1; j < heapSize; j = i*2+1){// j保存孩子中最大值下标if(j < heapSize - 1 && nums[j] < nums[j+1]){j++;}if(nums[i] >= nums[j]){break; // 因为从叶子节点向上调节,所以没有节点交换,其子树也不许变化}else{swap(nums[i], nums[j]);i = j; // j节点调整,其子树也需要调整}}}void buildHeap(vector<int>&nums, int heapSize){for(int i = heapSize / 2; i >= 0; i--){heapAdjust(nums, i, heapSize);}}public:int findKthLargest(vector<int>& nums, int k) {int heapSize = nums.size();buildHeap(nums, heapSize);// 第k大数倒数for(int i = nums.size() - 1; i > nums.size() - k; --i){swap(nums[0],nums[i]);--heapSize;heapAdjust(nums, 0, heapSize);}return nums[0];}
};

思路2:基于快速排序的选择方法

排序 - - - 交换排序(快速排序、冒泡排序)-CSDN博客

class Solution {
private:int partition(vector<int>&nums, int l, int r){int key = nums[l];while(l < r){while(l < r && nums[r] >= key) r--;nums[l] = nums[r];while(l < r && nums[l] <= key) l++;nums[r] = nums[l];}nums[l] = key;return l;}int quickSelect(vector<int>& nums, int l, int r, int k){int index = partition(nums, l, r);if(index == k)return nums[k];elsereturn index < k ? quickSelect(nums, index + 1, r, k)  // index数小于第k数则在index右边查找: quickSelect(nums, l, index - 1, k); // index数大于第k数则在index左边查找}public:int findKthLargest(vector<int>& nums, int k) {return quickSelect(nums, 0, nums.size() - 1, nums.size() - k); // 返回倒数k位置数}
};

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

相关文章:

  • 中音阶梯网站谁家建设扬州工程建设信息网站
  • 网站建设与管理维护说课自己做网站前端开发
  • 贺兰县住房城乡建设局网站一个网站多个域名 seo
  • 网站底部版权信息字体颜色上海seo顾问推推蛙
  • 学校网站logo怎么做哪个公司的软件开发公司
  • 网站建设汇报pptc网站开发视频教程
  • 如何通过网站后台修改网站qq教程网站源码
  • 陕西省住房和建设厅官方网站如果网站打开非常缓慢
  • 怎么用手机做网站平台郑州市中标公示网
  • vue网站开发要怎样做网站发到百度上面
  • 懂得做网站还可以做什么兼职我想在阿里巴巴网站开店_怎么做
  • 如何做推广麦当劳的网站html代码基础
  • 温州网站建设成都公司的网站制作
  • 建设网站需要哪些设备学建筑的网站
  • 做购物网站之前做些什么百度推广介绍
  • 公司网站建设制作全包上海定制网站开发
  • 网站做几级等保宁波建设信息网
  • 银川网站开发公司电话哪些网站是营销型网站及原因
  • 盐城网站建设公司网站建设初期 该如何推广
  • 建设银行成都市第九支行 网站工商局官网登录入口
  • 做网站开发用笔记本要什么配置一般使用的分辨率显示密度是多少?
  • 大理公司网站建设阿里云搭建wordpress
  • 钟表网站开发背景文章东莞市新冠最新消息
  • 建设银行甘肃省分行网站wordpress 换域名插件
  • iis 浏览网站wordpress添加dplayer
  • 四川省示范校建设网站网页设计与网站建设教学视频
  • 垂直网站建设方案书网站建设多少预算
  • 西安做网站商城的公司湖北网
  • 成都网站设计排名的公司价格滁州网站建设hi444
  • 自己做剧本网站wordpress+视差模板