給定一個整型陣列,找到主元素,它在陣列中的出現次數嚴格大於陣列元素個數的三分之一。
阿新 • • 發佈:2019-02-13
class Solution { public: /* * @param nums: a list of integers * @return: The majority number that occurs more than 1/3 */ int majorityNumber(vector<int> &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<len;i++) { hash[nums[i]%len]=0;//每個位置處剛開始為0,具有相同值的元素放在同一個位置 } for(int i=0;i<len;i++) { hash[nums[i]%len]++; } int x=len/3+1; for(int i=0;i<len;i++) { if(hash[nums[i]%len]>=x)//判斷某個位置處的元素數是否超過了三分之一 return nums[i]; } return -1; } };