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);
    }
}
相关推荐
Macbethad1 分钟前
半导体EFEM设备TwinCAT程序设计方案
java·前端·网络
程序员-King.2 分钟前
day136—快慢指针—重排链表(LeetCode-143)
算法·leetcode·链表·快慢指针
qq_336313932 分钟前
java基础-多线程练习
java·开发语言·算法
鹿角片ljp4 分钟前
Java多线程编程:从基础到实战的完整指南
java·开发语言·后端
期待のcode15 分钟前
Java虚拟机的垃圾回收器
java·开发语言·jvm·算法
2301_7973122625 分钟前
学习Java40天
java·开发语言·学习
Coder_Boy_26 分钟前
基于SpringAI的在线考试系统-DDD(领域驱动设计)核心概念及落地架构全总结
java·大数据·人工智能·spring boot·架构·ddd·tdd
黎雁·泠崖35 分钟前
Java初识面向对象+类与对象+封装核心
java·开发语言
悟能不能悟38 分钟前
java controller的DTO如果有内部类,应该注意什么
java·开发语言
没有才华的Mr.L41 分钟前
【JavaSE】数组
java·开发语言