lintcode 主元素(|、||、|||)

三道题感觉是一个题
给定一个整型数组,找到主元素,它在数组中的出现次数严格大于数组元素个数的1/k。
样例
给出数组 [3,1,2,3,2,3,3,4,4,4] ,和 k = 3,返回 3
方法比较简单,首先将数组排序,然后挨个进行遍历,如果重复那么count计数加1,如果count大于数组长度的1/k返回:

class Solution {
public:
    /**
     * @param nums: A list of integers
     * @param k: As described
     * @return: The majority number
     */
    int majorityNumber(vector nums, int k) {
        // write your code here
        sort(nums.begin(),nums.end());
        if (nums.size() == 1) return nums[0];
        int i = 1,count = 1;
        while (i < nums.size()) {
            if (nums[i] == nums[i-1]) {
                count++;
                if (count > nums.size()/k) return nums[i];
            }
            else count = 1;
            i++;
        }
    }
};

你可能感兴趣的:(lintcode 主元素(|、||、|||))