编程练习(第四周)
来源:互联网 发布:图文广告软件下载 编辑:程序博客网 时间:2024/06/05 18:56
215. Kth Largest Element in an Array
DescriptionSubmissionsSolutions
- Total Accepted: 117471
- Total Submissions: 307801
- Difficulty: Medium
- Contributors: Admin
Find the kth largest element in an unsorted array. Note that it is the kth largest element in the sorted order, not the kth distinct element.
For example,
Given [3,2,1,5,6,4]
and k = 2, return 5.
Note:
You may assume k is always valid, 1 ≤ k ≤ array's length.
分析:利用快排每次将数组划分为两组加一个枢纽元素,每一趟划分只需要将k与枢纽元素的下标进行比较,如果比枢纽元素下标大就从右边的子数组中找,如果比枢纽元素下标小从左边的子数组中找,如果一样则就是枢纽元素,找到,如果需要从左边或者右边的子数组中再查找的话,只需要递归一边查找即可。
代码如下:
int Sort(vector<int>& a, int low, int high){ int pivot = a[low]; if(low < high) { while(a[high] >= pivot && low < high) high --; a[low] = a[high]; while(a[low] <= pivot && low <high) low ++; a[high] = a[low]; } a[low] = pivot; return low;}int QuickSort_K_MAX(vector<int>& a, int low, int high, int k){ if(low >= high) return a[low]; else { int mid = Sort(a,low,high); if(mid > k) QuickSort_K_MAX(a,low,mid-1,k); else if(mid < k) QuickSort_K_MAX(a,mid+1,high,k); else return a[mid]; }}int findKthLargest(vector<int>& nums, int k){return QuickSort_K_MAX(nums,0,nums.size()-1,nums.size()-k);}
0 0
- 编程练习(第四周)
- 编程练习(第十四周)
- 课堂练习2(第四周)
- 课堂练习3(第四周)
- 课堂练习4(第四周)
- 课堂练习5(第四周)
- java继承练习(java 第四周)
- 课堂练习6(第四周)
- 第四周练习计划
- 课堂练习1(第四周)
- 算法练习第四周(自顶向下)
- 第四周作业-多线程编程
- 第四周作业-多线程编程
- 第四周作业--多线程编程
- 第四周作业-多线程编程
- 第四周作业-多线程编程
- 第四周作业-多线程编程
- 第四周作业-多线程编程
- 深搜与广搜以及例题
- java http工具类
- JSPatch热修复简单使用
- MaterialDesign——CardView
- ccf 最优配餐
- 编程练习(第四周)
- OpenCV 应用边缘检测与霍夫线变换实现旋转角度检测
- JS小笔记
- webots自学笔记(一)软件界面和简单模型仿真
- JAVA中常见的三种打印异常的方式
- 初识Shiro
- 第四周:[LeetCode]332. Reconstruct Itinerary
- Python中文乱码问题
- C++/C++11中std::set用法汇总