复制代码

主元素问题

n 个数中求超过50% 出现1次数的数

  1.首先我想到的是
    直接 map 数字和出现次数o(n)

  2.抵消法 (神犇才能想出来)

  从前到后
  取数据  发现和标定数据 不相同 ,抵消,相同 标记次数++ ,O(n)

  我看到的表情,啊,还能这样,不是

 

 

#define f(i,l,r) for(int i=l;i<=r;++i)  
int mahorityElement(vector<int> & v)
{
    int m,c=0;
    int len = v.size();
    f(i,0,len-1)
        c==0?m=v[i],c=1:m==v[i]?c++:c--;
    return m;
}

 

posted @ 2018-03-06 16:01  pg633  阅读(165)  评论(1编辑  收藏  举报