Week Training: 215 Kth Largest Element in an Array

来源:互联网 发布:网络算命高手 编辑:程序博客网 时间:2024/04/29 07:30

This is an exercise of the selection algorithm in the class this week just in time. In order to find the kth largest number, we first choose a random pivot, then put the numbers smaller and larger than it into 2 sequences. After that, if the size of the larger sequence is bigger than k, it does recursion in the larger sequence; if the size is smaller than rest length of the small sequence, do recursion in the small sequence with another k. The pivot finally returned is the answer.

class Solution {public:    int findKthLargest(vector<int>& nums, int k) {        srand(time(0));         int size = nums.size();        int n = rand()%size;        int pivot = nums[n];        vector<int> v1, v2;        for(int i=0;i<size;i++){            if(nums[i]>pivot)                v1.push_back(nums[i]);            else if(nums[i]<pivot)                v2.push_back(nums[i]);        }        if(k<=v1.size())            return findKthLargest(v1,k);        else if(k>(size-v2.size()))            return findKthLargest(v2,k-(size-v2.size()));        else            return pivot;    }};


0 0
原创粉丝点击