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];
        }
  • 相关阅读:
    Perl 简介
    一定时间后延时变长问题
    CPAN常见问题集
    J2SE简介
    brian的Perl问题之万能指南
    清洁工 VS 亿万富翁
    关于VC中的"stdafx.h"
    Perl模式匹配
    wiki介绍
    生活中10大省钱小秘诀 白领一族"必备诀窍"
  • 原文地址:https://www.cnblogs.com/hellowooorld/p/7435910.html
Copyright © 2011-2022 走看看