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);
    }
}
相关推荐
疯一样的码农9 分钟前
Spring Boot Starter Parent介绍
java·spring boot·后端
iQM7511 分钟前
Spring Boot集成RBloomFilter快速入门Demo
java·spring boot·spring
爱上语文15 分钟前
Springboot 阿里云对象存储OSS 工具类
java·开发语言·spring boot·后端·阿里云
代码代码快快显灵3 小时前
java之异常处理
java·开发语言
茶馆大橘3 小时前
Spring Validation —— 参数校验框架
java·后端·学习·spring
阿望要努力上研究生5 小时前
若依项目搭建(黑马经验)
java·redis·node.js·maven·管理系统
一只脑洞君5 小时前
Kubernetes(K8s)的简介
java·容器·kubernetes
zygswo5 小时前
程序猿成长之路之设计模式篇——设计模式简介
java·设计模式
除了代码啥也不会6 小时前
springboot项目发送邮件
java·spring boot·spring