分治算法的运用
来源:互联网 发布:30岁精华推荐知乎 编辑:程序博客网 时间:2024/04/28 18:00
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来判断所要找的值在哪个分向量中,以此递归找下去。例子解析如图。
程序答案:
class Solution {
public:
int findKthLargest(vector<int>& nums, int k)
{
int length = nums.size();
if (length == 1)
return nums[0];
vector<int> left;
vector<int> right;
for (int index=1; index<length; index++)
{
if (nums[index] > nums[0])
right.push_back(nums[index]);
else
left.push_back(nums[index]);
}
length = right.size();
if (length >=k)
return findKthLargest(right, k);
else if(length == k-1)
return nums[0];
else
return findKthLargest(left, k-length-1);
}
};
另一种解法:
程序答案:
class Solution {
public:
int findKthLargest(vector<int>& nums, int k) {
int n=nums.size();
if(n==1) return nums[0];
else
{
sort(nums.begin(),nums.end());
return nums[n-k];
}
}
};
- 分治算法的运用
- 基本的分治思想算法运用
- 求最近点对(分治算法的运用)
- 分治法在算法设计中的运用
- 分治的运用---最近点对
- 树上的分治算法
- 分治算法的简介
- hash算法的运用
- 分治的算法设计思想
- 逆序数的分治算法
- 整数相乘的分治算法
- 分治算法的简单应用
- 分治算法
- 分治算法
- 分治算法?
- 【算法】分治
- 【算法】分治
- 分治算法
- Activity的onSaveInstanceState()与onRestoreInatanceState()
- BZOJ 3597 [Scoi2014]方伯伯运椰子
- centos安装五笔
- VLC-Qt
- 线程安全>JVM内存模型>JAVA类加载
- 分治算法的运用
- URI和URL的区别
- STM32实验1:IO输出
- 2017算法课.04(Valid Anagram )
- 170318 Qt-第一个程序
- 蓝桥杯 地宫取宝 (记忆化搜索)
- FreeRTOS的源代码个人分析(基于KEIL下STM32F103的Demo) 七
- 自学报告
- git本地分支创建后关联远程分支