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);
    }
}
相关推荐
BUG?不,是彩蛋!5 分钟前
从零到一掌握 K 线与技术指标:Java 实战教程 | MA, RSI, MACD 全解析
java·开发语言·spring boot·量化投资
Frostnova丶6 分钟前
(10)LeetCode 560. 和为K的子数组
算法·leetcode·哈希算法
qq_4279403411 分钟前
java-UI自动化selenium+TestNG
java·selenium·自动化
biter down12 分钟前
C++ 设计不可被继承的类
java·开发语言·c++
于先生吖14 分钟前
Java 智慧社区本地生活系统:上门服务 + 商城模块完整开发
java·大数据·生活
摇滚侠15 分钟前
Java 项目教程《尚庭公寓-下》,单体架构项目,从开发到部署
java·开发语言·架构
面对疾风叭!哈撒给23 分钟前
Linux之Docker使用JDK21安装包制作JDK21镜像包
java·linux·运维·docker
计算机学姐26 分钟前
基于SpringBoot的汽车美容保养系统
java·spring boot·后端·spring·tomcat·汽车·mybatis
铁打的阿秀27 分钟前
Java 打印pdf添加水印实现
java·python·pdf
爱吃山竹的大肚肚27 分钟前
依赖冲突快速解决
java·spring boot·后端·spring cloud·maven