leetcode_c++:Divide and Conquer:Kth Largest Element in an Array(215)

原创 2016年08月28日 15:25:35

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.


这题用 O(nlogn) 是可以过的,也就是说你可以先排序再找,也可以用 heap,priority_queu 等数据结构。
当然,用 Quicksort 里的 Quick-select(也就是 partion)方法是可以做到 O(n) 的。(对于为啥 quick select 是 O(n) 的可以看


class Solution {
public:
    int findKthLargest(vector<int>& nums, int k) {
        sort(nums.begin(), nums.end());
        return nums[nums.size() - k - 1];
    }
};
class Solution {
private:
    int partition(vector<int>& nums, int left, int right) {
        int pivot = nums[left];
        int l = left + 1, r = right;
        while (l <= r) {
            if (nums[l] < pivot && nums[r] > pivot){
                swap(nums[l++], nums[r--]);
            }
            if (nums[l] >= pivot) l++;
            if (nums[r] <= pivot) r--;
        }
        swap(nums[left], nums[r]);
        return r;
    }

public:
    int findKthLargest_qsort(vector<int>& nums, int k) {
        int left = 0, right = nums.size() - 1;
        while (true) {
            int pos = partition(nums, left, right);
            if (pos == k - 1){
                return nums[pos];
            }
            if (pos > k - 1) {
                right = pos - 1;
            }else{
                left = pos + 1;
            }
        }
    }

};
版权声明:本文为博主原创文章,未经博主允许不得转载。

【LeetCode-面试算法经典-Java实现】【215-Kth Largest Element in an Array(数组中第K大的数)】

【215-Kth Largest Element in an Array(数组中第K大的数)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】代码下载【https://github...
  • DERRANTCM
  • DERRANTCM
  • 2015年08月28日 06:57
  • 4120

Leetcode全数组问题

目录 1、编号2 Median of Two Sorted Arrays There are two sorted arrays A and B of size m and n respe...
  • wangxiaojun911
  • wangxiaojun911
  • 2014年02月06日 03:32
  • 6335

Leetcode解题笔记(Array)

源码见github https://github.com/Kelvinmao/Leetcode/tree/master/Array 2016-08-08更新154.Find Minimum in Ro...
  • kelvinmao
  • kelvinmao
  • 2016年07月23日 22:38
  • 1566

Divide and Conquer (1) -- Kth Largest Element in an Array,Different Ways to Add Parentheses

Kth Largest Element in an Array,Different Ways to Add Parentheses
  • dwt0317
  • dwt0317
  • 2017年01月12日 22:59
  • 122

【LeetCode】215. Kth Largest Element in an Array,基于Java和C++的解法

215. Kth Largest Element in an Array Total Accepted: 57859 Total Submissions: 171725 Difficulty: M...
  • Jin_Kwok
  • Jin_Kwok
  • 2016年05月31日 11:40
  • 480

Leetcode--Add to List 215. Kth Largest Element in an Array

题目Find the kth largest element in an unsorted array. Note that it is the kth largest element in the ...
  • wanna_wsl
  • wanna_wsl
  • 2017年07月03日 11:05
  • 143

[leetcode]215. Kth Largest Element in an Array

题意:给一个数组,求出数组中的第K大数,比如[3,2,1,5,6,4] 求出第2大数,则为5 分析:复习堆排序,对于这道题来讲,找第k大数,可以通过一个小顶堆实现。首先取数组中的前k个数组成小顶堆(具...
  • u010057864
  • u010057864
  • 2016年07月26日 21:28
  • 259

Leetcode Algorithm 215. Kth Largest Element in an Array

Leetcode Algorithm 215. Kth Largest Element in an Array 给定一个乱序的非空整型数数组,返回数组中第k大的数...
  • rinsonlo
  • rinsonlo
  • 2017年03月04日 17:14
  • 107

Leetcode题解 - 215. Kth Largest Element in an Array

Find the kth largest element in an unsorted array. Note that it is the kth largest element in the so...
  • u010013453
  • u010013453
  • 2017年03月11日 20:31
  • 110

Leetcode[215]-Kth Largest Element in an Array

Find the kth largest element in an unsorted array. Note that it is the kth largest element in the so...
  • Dream_angel_Z
  • Dream_angel_Z
  • 2015年06月13日 20:58
  • 1068
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:leetcode_c++:Divide and Conquer:Kth Largest Element in an Array(215)
举报原因:
原因补充:

(最多只允许输入30个字)