首页 > 代码库 > [leetcode]Majority Element

[leetcode]Majority Element

超过了一半是这个数,所以排个顺,第n/2个也就是中间那个就是我们要的。。。

但是我们也没必要全部排序,只要找到第n/2个就好了。。。

 

class Solution {public:    int find_kth(vector<int>& num, int left, int right, int k) {        if (left == right) {            return num[k];        }        int l = left;        int r = right;        swap(num[l], num[(l+r)/2]);        int mid = num[l];        while(l < r) {            while(l < r && num[r] >= mid) r--;            if (r > l) num[l++] = num[r];            while(l < r && num[l] < mid) l++;            if (r > l) num[r--] = num[l];        }        num[l] = mid;        if (l >= k) return find_kth(num, left, l, k);        else return find_kth(num, l + 1, right, k);    }    int majorityElement(vector<int> &num) {        return find_kth(num, 0, num.size() - 1, num.size() / 2);    }};

 

[leetcode]Majority Element