博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
can-i-win(好)
阅读量:6427 次
发布时间:2019-06-23

本文共 1777 字,大约阅读时间需要 5 分钟。

https://leetcode.com/problems/can-i-win/

package com.company;import java.util.*;class Solution {    // 参考了下面的解法:    // https://discuss.leetcode.com/topic/68773/java-solution    // 开始没有用dp,超时了    // discuss里面解法太牛逼了,用位图来作为key记录    // 用Boolean而不是boolean来做数组,可以充分利用null的初始值    // 其中 ^= 异或也用的非常好,非常到位,返回的时候也很好    Boolean[] gotList;    int m;    int key;    public boolean canIWin(int maxChoosableInteger, int desiredTotal) {        if ((1+maxChoosableInteger)*maxChoosableInteger < desiredTotal) {            return false;        }        m = maxChoosableInteger;        key = 0;        gotList = new Boolean[1 << m];        return win(desiredTotal);    }    private boolean win(int d) {        if (gotList[key] != null) {            return gotList[key];        }        for (int i=0; i
<< i; if ((key & bit) == 0) { if (i+1 >= d) { gotList[key] = true; return true; } key ^= bit; boolean tmp = false; if (!win(d-i-1)) { tmp = true; } key ^= bit; if (tmp) { gotList[key] = true; return true; } } } gotList[key] = false; return false; }}public class Main { public static void main(String[] args) throws InterruptedException { System.out.println("Hello!"); Solution solution = new Solution(); // Your Codec object will be instantiated and called as such: int maxChoosableInteger = 18; int desiredTotal = 79; boolean ret = solution.canIWin(maxChoosableInteger, desiredTotal); System.out.printf("ret:%b\n", ret); System.out.println(); }}

 

转载地址:http://vbnga.baihongyu.com/

你可能感兴趣的文章
Stream
查看>>
我的友情链接
查看>>
Windows Server 2012_Install_Guide
查看>>
ISA Server搭建站点对站点×××
查看>>
我的友情链接
查看>>
超大规模数据中心:给我一个用整机柜的理由先
查看>>
Cacti——安装
查看>>
执行命令取出linux中eth0的IP地址
查看>>
小强系列之大话移动测试
查看>>
java学习(二)--excel导出
查看>>
微信小程序--helloworld
查看>>
6.17 dokcer(二)安装与卸载Compose
查看>>
Apache Storm技术实战之1 -- WordCountTopology
查看>>
关于寻路
查看>>
CRUD全栈式编程架构之控制器的设计
查看>>
python常用内建模块(五)
查看>>
你为什么有那么多时间写博客?
查看>>
Excel 中使用VBA
查看>>
$.ajax同步请求会阻塞js进程
查看>>
建造者模式-java
查看>>