首页 > 其他 > 详细

[leetcode]Majority Element

时间:2014-12-22 14:20:14      阅读:486      评论:0      收藏:0      [点我收藏+]

超过了一半是这个数,所以排个顺,第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

原文:http://www.cnblogs.com/x1957/p/4177970.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!