zoukankan      html  css  js  c++  java
  • [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 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.

    Credits:
    Special thanks to @mithmatt for adding this problem and creating all test cases.

    思路:

    利用快排划分的思想来找。注意从小到大排序以后,第k大的是num[n-k]。

    int partion (vector<int>& nums,int begin,int end)
        {
            int pivot = nums[begin];
            while(begin<end)
            {
                while(nums[end]>=pivot && begin<end)end--;
                nums[begin] = nums[end];            
                while(nums[begin]<=pivot && begin<end)begin++;
                nums[end] = nums[begin];
            }
            nums[begin] = pivot;
            return begin;
        }
        int findKthLargest(vector<int>& nums, int k)
        {
            int begin =0,end = nums.size()-1,n =nums.size();
            while(begin<end)
            {
                int j = partion(nums,begin,end);
                if(j==n-k)break;
                else if(j<n-k)begin = j+1;
                else end = j-1;            
            }
            return nums[n-k];
        }
  • 相关阅读:
    柱状图最大的矩形
    单词搜索
    最小覆盖子串
    颜色分类
    编辑距离
    X的平方根
    二进制求和
    最大子序和
    N皇后
    java8-14-时间API
  • 原文地址:https://www.cnblogs.com/hellowooorld/p/7435910.html
Copyright © 2011-2022 走看看