给定一个整型数组,找到主元素,它在数组中的出现次数严格大于数组元素个数的三分之一。

class Solution {
public:
    /*
     * @param nums: a list of integers
     * @return: The majority number that occurs more than 1/3
     */
    int majorityNumber(vector &nums) {
        // write your code here
        int len=nums.size();
        if(len==0)
        return -1;
        if(len==1)
        return nums[0];
        if(len==2)
        {
            if(nums[0]=nums[1])
            return nums[0];
            else
            return -1;
        }

//利用散列表(哈希表)思想解决

       int hash[len];//盛放每个元素在散列表中位置的数组
        for(int i=0;i=x)//判断某个位置处的元素数是否超过了三分之一
            return nums[i];
        }
        return -1;
    }
};

你可能感兴趣的:(剑指offer)