LeetCode—Nim游戏(思维)+ 猜数字游戏(巧妙数组)

Nim游戏(简单)

2020年6月14日

题目来源:力扣

在这里插入图片描述

  • 思维

一开始真的当尼姆游戏来解,怎么想都不对,后面看了题解,我傻了,只要是4的倍数,每次就都会输。

class Solution {
    public boolean canWinNim(int n) {
        return n%4!=0;
    }
}

在这里插入图片描述

猜数字游戏(简单)

2020年6月14日

题目来源:力扣

在这里插入图片描述

解题
两个字符串长度相同,可以通过遍历每一位是否相等来确定公牛,也就是A的个数
母牛则可以用抵消的方式来判断

用示例2来做演示
首先遍历,第一个位置,发现不相等,那么在数组上的nums[s]+1,nums[g]-1
在这里插入图片描述
判断第二个位置,发现相等
在这里插入图片描述
判断第三个位置,不相等,那么看一下nums[s]这个位置(也就是nums[2])没有数,那么填进去;nums[g](也就是nums[1]里面有个1)。因为我们刚刚是nums[s]++,nums[g]–。所以现在nums[g]大于0的话,就说明有个s等于g,那么母牛B加一。nums[s]++,nums[g]–
在这里插入图片描述
按这个规律,继续找下面的数
在这里插入图片描述

class Solution {
    public String getHint(String secret, String guess) {
        int a=0,b=0;
        int[] nums=new int[10];
        for(int i=0;i<secret.length();i++){
            int s=secret.charAt(i)-'0';
            int g=guess.charAt(i)-'0';
            if(s==g){
                a++;
            }else{
                if(nums[s]<0) b++;
                if(nums[g]>0) b++;
                nums[s]++;
                nums[g]--;
            }
        }
        return a+"A"+b+"B";
    }
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值