leetcode:Majority Elements 菜鳥解法

感覺題目有一定難度

剛開始抱着兩種思路: 先排序,然後順序查找一次就好

                                     不排序,順序查找,遇到一對不相同的就去掉,想去掉主元素,一定需要一個非主元素,主元素很多,就能找出來了

結果第一種超時,第二種死活過不了....

最後採用了按位做的方式,每位只可能是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;
    }
};

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章