Java | Leetcode Java题解之第464题我能赢吗

题目:

题解:

java 复制代码
class Solution {
    Map<Integer, Boolean> memo = new HashMap<Integer, Boolean>();

    public boolean canIWin(int maxChoosableInteger, int desiredTotal) {
        if ((1 + maxChoosableInteger) * (maxChoosableInteger) / 2 < desiredTotal) {
            return false;
        }
        return dfs(maxChoosableInteger, 0, desiredTotal, 0);
    }

    public boolean dfs(int maxChoosableInteger, int usedNumbers, int desiredTotal, int currentTotal) {
        if (!memo.containsKey(usedNumbers)) {
            boolean res = false;
            for (int i = 0; i < maxChoosableInteger; i++) {
                if (((usedNumbers >> i) & 1) == 0) {
                    if (i + 1 + currentTotal >= desiredTotal) {
                        res = true;
                        break;
                    }
                    if (!dfs(maxChoosableInteger, usedNumbers | (1 << i), desiredTotal, currentTotal + i + 1)) {
                        res = true;
                        break;
                    }
                }
            }
            memo.put(usedNumbers, res);
        }
        return memo.get(usedNumbers);
    }
}
相关推荐
渡过晚枫几秒前
[蓝桥杯/java/算法]攻击次数
java·算法·蓝桥杯
风筝在晴天搁浅1 分钟前
hot100 3.无重复字符的最长子串
数据结构·算法·leetcode
ByteX3 分钟前
Java8-Function创建对象替代Builder
java·开发语言
飞火流星020274 分钟前
【Arthas工具】使用Trace命令分析Java JVM方法调用链路及耗时
java·jvm·arthas·jvm性能调优·java方法调用链路分析及耗时·jvm实时分析·jvm方法调用实时分析
努力学算法的蒟蒻8 分钟前
day37(12.18)——leetcode面试经典150
算法·leetcode·面试
Han.miracle11 分钟前
Spring MVC 请求参数处理全解析
java·请求
winfield82111 分钟前
Java 的静态代理和动态代理
java·代理模式
222you16 分钟前
Java的Stream流
java·开发语言
kevinzeng17 分钟前
Redis的IO多路复用
java·redis
2501_9167665417 分钟前
【SpringMVC】异常处理和拦截器
java·spring