给我整吐了,写了半天愣是憋不出来,失败代码都在提交记录里,就不往这儿贴了,题解写的还挺简洁哈。
思路:
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;
}
}