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);
    }
}
相关推荐
seven97_top14 小时前
Springboot 常见面试题汇总
java·spring boot·后端
小蕾Java14 小时前
Java 开发工具,最新2025 IDEA 使用,保姆级教程
java·开发语言·intellij-idea
刘登辉14 小时前
idea使用联网缓存的pom进行离线开发
java·ide·intellij-idea·离线开发
Автомата Калашникова14 小时前
Java操作.docx文档 —— docx4j
java·开发语言
hello 早上好14 小时前
深入 Spring 条件化配置底层:从硬编码到通用注解的实现原理
java·后端·spring
亚林瓜子15 小时前
Spring中Date日期序列化与反序列化中格式设置
java·后端·spring·jackson·date
GISer_Jing15 小时前
Next.js数据获取演进史
java·开发语言·javascript
DokiDoki之父15 小时前
Web核心—JSP入门/EL/JSTL标签/MVC+三层架构/一文速通
java·开发语言
寒月霜华15 小时前
java-高级技术(单元测试、反射)
java·开发语言·单元测试·反射
独自破碎E15 小时前
Leetcode2166-设计位集
java·数据结构·算法