2029. 石子游戏 IX / 1295. 统计位数为偶数的数字

给我整吐了,写了半天愣是憋不出来,失败代码都在提交记录里,就不往这儿贴了,题解写的还挺简洁哈。

思路:

1.统计stones中3的余数类型的个数,即余0,count0,余1count1,余2count2。
2.count0是偶数,等于没有count0;count0是奇数,等于Bob拥有一次更换先手优势的机会。
3.如果没有count0,那么:当count1或count2为0时,Bob必胜,此时游戏正常结束或者Alice被迫凑齐了3的倍数,否则,Alice总有机会使Bob凑齐3的倍数;如果Bob拥有追回优势的机会,那么只要count1和count2的个数相差大于2,那么Alice总有机会抵消掉Bob这个机会,从而获胜。
4.题解和评论区大佬大概讲的就是这个意思。

代码:

class Solution {
    public boolean stoneGameIX(int[] stones) {
        int count0 = 0,count1 = 0,count2 = 0;
        for (int i : stones){
            switch (i%3){
                case 0:count0++;break;
                case 1:count1++;break;
                case 2:count2++;break;
            }
        }
        boolean alice = count0 % 2 == 0;
        if (alice){
            return count1 != 0 && count2 != 0;
        }
        return Math.abs(count1-count2)>2;
    }
}

这题题解竟然没有java,有点小麻,是看不上嘛
思路:

1.for循环遍历nums,对n判断其位数,位数是偶数则ans++。
2.返回ans。

代码:

class Solution {
    public int findNumbers(int[] nums) {
        int ans = 0;
        for (int n : nums){
            int wei = 0;
            while (n/10 != 0){
                wei++;
                n /= 10;
            }
            if (wei % 2 != 0){
                ans++;
            }
        }
        return ans;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值