感覺題目有一定難度
剛開始抱着兩種思路: 先排序,然後順序查找一次就好
不排序,順序查找,遇到一對不相同的就去掉,想去掉主元素,一定需要一個非主元素,主元素很多,就能找出來了
結果第一種超時,第二種死活過不了....
最後採用了按位做的方式,每位只可能是0或1,統計出現次數,肯定是多的那個,這樣循環32n次就行了,結果過了,但是很慢
class Solution {
public:
int majorityElement(vector<int> &num) {
int major=0,bit=1,temp,one=0,zero=0;
for(int i=0;i<32;i++){
for(int j=0;j<num.size();j++){
((num[j]>>i)&1)?one++:zero++;
}
if(one>num.size()/2) major+=bit;
bit*=2;
one = 0;zero = 0;
}
return major;
}
};