zoukankan      html  css  js  c++  java
  • Kth Largest Element in an Array

    Kth Largest Element in an Array

    Total Accepted: 32668 Total Submissions: 109273 Difficulty: Medium

    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.

    class Solution {
    private:
        int partion(vector<int>& nums,int start,int end){
        
            if(end-start==1){
                return start;
            }
        
            srand(time(0));
            int rindex = start + rand()%(end-start);
            swap(nums[rindex],nums[end-1]);
            
            int i=start-1,j=start;
            while(j < end-1){
                if(nums[j] < nums[end-1]){
                    swap(nums[++i],nums[j]);
                }
                ++j;
            }
            
            swap(nums[++i],nums[end-1]);
            
            return i;
        }
    public:
        int findKthLargest(vector<int>& nums, int k) {
            int start = 0;
            int end   = nums.size();
            
            k = end - k;
            
            int index = partion(nums,start,end);
            while(index != k){
                if(index < k){
                    start = index+1;
                }else{
                    end = index;
                }
                index = partion(nums,start,end);
            }
            return nums.size()==0 ? 0 : nums[k];
        }
    };
  • 相关阅读:
    html----有关图像
    前端开发初学者
    angular js 正序倒叙
    viewpager无线轮播获取网络图片
    angular js 球星
    angular js shopping
    angular js 公告墙
    Android 常用正则表达式
    Android 内存泄漏
    TCP/IP,必知必会的
  • 原文地址:https://www.cnblogs.com/zengzy/p/5057480.html
Copyright © 2011-2022 走看看