力扣力扣力扣!(01-摩尔投票法)

最近在刷力扣的每日一题,最为菜鸡,感觉难度还好。
今天的题:在一列长度为n的 数组 中找到一个出现次数大于于[n/2]的数(默认有)
今天看到了摩尔投票法感觉比自己想的要快。
(p.s. :哪个排列取中间我就不看了,毕竟是算法题,而且反正都需要遍历一遍)
—————————————————————————
摩尔投票法 是一种抵消的思想
1.有([n/2]+?)个相同数,则在与其他数一一相消的条件下,这个相同数一定会有剩余。
2.由上,所有数“大混战”剩余的数一定是那个数量大于于[n/2]的数(相同的数字不消除!!!)

算法想法:
1.认为第一个就是所求的数,并且计数为1
2.下个数相同->计数加一 || 下个数不同->计数减一
3.判断 计数为0时换数

class Solution {
public:
    int majorityElement(vector<int>& nums) {
        int ticket=0,num=0;
        for(int i=0;i<nums.size();i++){
            if(ticket==0){
                num=nums[i];
                ticket++;
            }
            else{
                num==nums[i]?ticket++:ticket--;
            }
        }
        return num;
    }
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值