can-i-win(好)

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<m; i++) {
            int bit = 1 << 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();

    }

}
时间: 2024-08-28 23:52:11

can-i-win(好)的相关文章

关于win下Memcached安装步骤

2天对我来说有点煎熬..数据量达到17w的时候 我本地执行查询速度特别慢! 请教了一些php大牛如何解决速度问题,在加了索引和优化sql后还是速度慢!我决定在win环境下用Memcached和memcache 来处理,先声明一下: memcache是php的拓展,memcached是客户端,复杂的说:Memcache模块提供了于memcached方便的面向过程及面向对象的接口,memcached是为了降低动态web应用 从数据库加载数据而产生的一种常驻进程缓存产品. 因为我本地用的是xampp集

Csharp: speech to text, text to speech in win

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86

win 8 远程桌面文件复制问题(图)

用win7连接远程桌面,可以很方便的在宿主机之间文件复制粘贴.但用win8.1远程连接桌面时,却发现不能复制文件了.查看网上资料,最后总结实现此过程如下: win+R,运行mstsc,如下图所示: 点击ok,然后选择show options,如下图所示: 切换到选项卡local resources,然后点击块local devices and resources中的more,如下图所示: 选择drives中要共享的磁盘,点击ok按钮,如下图所示: 最后点击connect按钮,即可连接. 转载请注

系统引导UEFI 引导,Win下挂载EFI分区教程

首先了解几个东西: 1. MBR分区表:Master Boot Record,即硬盘主引导记录分区表,只支持容量在 2.1TB 以下的硬盘,超过2.1TB的硬盘只能管理2.1TB,最多只支持4个主分区或三个主分区和一个扩展分区,扩展分区下可以有多个逻辑分区. 2. GPT分区表:GPT,全局唯一标识分区表(GUID Partition Table),与MBR最大4个分区表项的限制相比,GPT对分区数量没有限制,但Windows最大仅支持128个GPT分区,GPT可管理硬盘大小达到了18EB.只有

Win Server 2012 R2 WSUS 无法识别 Win Server 2016 & Win10的解决办法

各位好,今天给大家分享一个我遇到的问题. 相信微软在推出了 Windows Server 2016和Win10 操作系统之后,有很多同学都第一时间进行了安装和测试,想第一时间感受一下全新的系统平台带来的新体验. 但是不知道有没有同学发现,如果我们在域环境中搭建了 Server 2016或者Win10的机器,域内的 WSUS 服务器有可能是无法识别出来的,所以会直接导致补丁推送失败,从而 Server2016和Win10的终端根本无法享受到Windows更新服务. 那么怎么办呢? 今天我就来给大家

Audition CS6在Win 7中“音频输入的采样频率与输出设备不匹配”问题的解决 - imsoft.cnblogs

1.运行Audion CS6,出现问题框. 2.右击任务栏右下方的那个小喇叭图标,在弹出的提示框里,单击"播放设备".如图: 3.单击"播放设备"后,在图内左键单击"扬声器"然后双击"扬声器",出现下图,双击"属性"选项. 4.点击"高级",在选择采样率和位深度里选择与输入的音频的采样频率和位深相同的设置.我的输入和输出都选择的是"16位,4100Hz" 5.点&qu

win环境下,django+postgresql配置

先下载postgresql的python包,选择合适自己的python版本和平台32位还是64位,http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml 下载win环境下postgresql接口,http://www.stickpeople.com/projects/python/win-psycopg/ 设置django settings.py DATABASES项 注:第2步如果不操作就会出现from psycopg2._psycopg import

win 10 开机后无法显示桌面

我整理了几种方法,可以试一下 1> win + x 然后运行explorer.exe 2> 1/// shift + ctrl + esc 进入 任务管理器 2///        点击  详细信息,如图 3/// 然后找到explorer.exe 4/// 右键 结束进程 5///     点击文件,运行新任务 6/// 输入 explorer.exe,勾上那个选项,如图 然后确定. 3> 1)win + x 2)电源选项,然后点击  其他电源设置 3)见图 4)点击更改当前不可用的设

win 下 安装opencv for python

在安装之前,先了解的事情 1.自己win系统是32还是64(不赘述) 2.安装的python的版本 以我的为例: 好了 接下来可以去网站下载对应的opencv,地址是 https://pypi.python.org/pypi/opencv-python#downloads 下载完毕之后执行 如果顺利的话会看到 检查是否成功 以上

win 上安装cad2002的心得

前不久,一从事测绘的哥们来找我,要我给她装一专业软件,想想应该很简单,不知为何把他难成这样,他极力要求安装xp系统,说是只有xp上才能装成功,我不信这个邪,查了许多资料发现win 7根本不兼容cad2002这款折磨人的软件,我变的很急躁,问他为何一定要装cad2002,就不能用其他版本吗,他说不能,我也没办法了,只好继续硬着头皮查资料,装系统,一遍遍.这过程中,最让人煎熬的是,由于硬件(台式机)的配置极高,安装好xp后开机总是蓝屏,只好作罢,他只能重新换了一台主机. AutoCAD2002默认不