LeetCode215. Kth largest element

来源:互联网 发布:网络语咸鱼 编辑:程序博客网 时间:2024/06/09 20:48

description:

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.

解题思路:

使用快排,将array排序然后输出。
时间复杂度O(nlogn).
以后更新O(n)算法

class Solution {    /*     * @param k : description of k     * @param nums : array of nums     * @return: description of return     */    public int kthLargestElement(int k, int[] nums) {        // write your code here        if (nums == null || nums.length == 0) {            return -1;        }        if (nums.length < k) {            return -2;        }        if (k <= 0) {            return -3;        }        quickSort(nums, 0, nums.length - 1);        return nums[k - 1];    }    private void quickSort(int[] nums, int start, int end) {        if (start >= end) {            return;        }        int left = start;        int right = end;        int pivot = nums[(start + end) / 2];        while (left <= right) {            while (left <= right && nums[left] > pivot) {                left++;            }            while (left <= right && nums[right] < pivot) {                right--;            }            if (left <= right) {                int temp = nums[left];                nums[left] = nums[right];                nums[right] = temp;                left++;                right--;            }        }        quickSort(nums, start, right);        quickSort(nums, left, end);    }}
0 0