leetcode刷题之旅——215. Kth Largest Element in an Array

来源:互联网 发布:过期未注册域名查询 编辑:程序博客网 时间:2024/05/01 00:06


        这道题目是分治算法中的一道题目,中等难度里面通过率为37%的一道求数组当中最大元素的一道题目。

题目大意:

        给定一个数组,然后给定我们一个数字代表第几大的数,比如这个数字为1,那么就是从这个数组当中挑选出第一大的数字。

例子:

         For example,
         Given [3,2,1,5,6,4] and k = 2, return 5.

算法:

        这道题目其实比较简单,也有很多做法,用sort函数直接排序是可以的,复杂度为O(nlogn)。但是想到这道题目是分治算法的,所以为了练习,还是用快速排序做。做完之后,再根据给定的排名进行直接寻找就可以了。

代码:

class Solution {public:    int findKthLargest(vector<int>& nums, int k)     {        qsortt(nums,0,nums.size()-1);        int n=nums.size()-1;        return nums[n-k+1];    }    void qsortt(vector<int>& nums,int left,int right)    {        if(left>right) return;        int temp;        temp=nums[left];        int i,j;        i=left;        j=right;        while(i!=j)        {            while(nums[j]>=temp&&i<j)  j--;            while(nums[i]<=temp&&i<j)  i++;            if(i<j)            {                int t;                t=nums[i];                nums[i]=nums[j];                nums[j]=t;            }        }        nums[left]=nums[i];        nums[i]=temp;        qsortt(nums,left,i-1);        qsortt(nums,i+1,right);            }};



0 0
原创粉丝点击