第四篇 Flip Game II

 1 public class Solution {
 2    public boolean canWin(String s) {
 3         if (s == null || s.length() <= 1) {
 4             return false;
 5         }
 6         ArrayList<String> validMoves = getValidMoves(s);
 7         if (validMoves.isEmpty()) {
 8             return false;
 9         }
10         for (String str : validMoves) {
11             if (!canWin(str)) {
12                 return true;
13             }
14         }
15         return false;
16     }
17
18     private ArrayList<String> getValidMoves(String s) {
19         ArrayList<String> result = new ArrayList();
20         for (int i = 0; i < s.length() - 1; i++) {
21             if (s.charAt(i) == ‘+‘ && s.charAt(i + 1) == ‘+‘) {
22                 char[] tmp = s.toCharArray();
23                 tmp[i] = ‘-‘;
24                 tmp[i + 1] = ‘-‘;
25                 result.add(new String(tmp));
26             }
27         }
28         return result;
29     }
30 }

Google 面经题

之前和聪喵喵复习LinkedIn面经can i win, 同样的思路也可以用在这道题

此类轮流操作的游戏问题也可以使用枚举法解决,关键在于第11行!canWin(str),表示对于当前选择对手必输,那么当前选择为必胜策略

时间: 2024-10-13 18:42:51

第四篇 Flip Game II的相关文章

Flask最强攻略 - 跟DragonFire学Flask - 第四篇 Flask 中的模板语言 Jinja2 及 render_template 的深度用法

是时候开始写个前端了,Flask中默认的模板语言是Jinja2 现在我们来一步一步的学习一下 Jinja2 捎带手把 render_template 中留下的疑问解决一下 首先我们要在后端定义几个字符串,用于传递到前端 STUDENT = {'name': 'Old', 'age': 38, 'gender': '中'}, STUDENT_LIST = [ {'name': 'Old', 'age': 38, 'gender': '中'}, {'name': 'Boy', 'age': 73,

cocos2d-x 3.2 之 2048 —— 第四篇 ★ 核心 ★

***************************************转载请注明出处:http://blog.csdn.net/lttree****************************************** 大家十一过得肿么样啊~ 我现在的情况就是--每逢佳节 胖三斤 啊 ,胖三斤..o(╯□╰)o.. 好了,继续做2048, 这是第四篇啦~ 这篇的内容就是对触摸的处理哟~ 就是,你上下左右滑动,相应移动~ 我们先在 游戏的宏定义类 中,建立一个枚举方向变量: Game

第十四篇 现象

第十四篇  现象 "现象"的产生是由宇宙当中各种因素交汇的结果.现象是万物在宇宙中的展现,它可以被人为创造,也可以由宇宙规律自行产生.现象能帮助人类逐步地了解宇宙的本质,也能帮助人类更好地了解自己. 当一个生命对宇宙有足够高度的认识之后就会留意所有的现象,并从这些现象当中去探索自身以及宇宙的奥秘.可以说,生命的成长过程就是不断地分析与探索各种现象,从而总结经验,让自身不断提高探索宇宙奥秘能力的一个历练过程. 随着对各种现象的不断分析与探索,人类会越来越深刻地认识到现象背后的本质,而不会

shell第四篇(上)

第四篇了解Shell 命令执行顺序分析 Shell 从标准输入或脚本中读取的每一行称为管道(pipeline);它包含了一个或多个命令(command),这些命令被一个或多个管道字符(|)隔开 事实上还有很多特殊符号可用来分隔单个的命令:分号(;).管道(|).&.逻辑AND (&&),还有逻辑OR (||).对于每一个读取的管道,Shell都回将命令分割,为管道设置I/O,并且对每一个命令依次执行下面的操作: 整个步骤顺序如上图所示,看起来有些复杂. 当命令行被处理时,每一个步骤

Eclipse插件开发 学习笔记 PDF 第一篇到第四篇 免分下载 开发基础 核心技术 高级进阶 综合实例

<<Eclipse插件开发 学习笔记>>,本书由浅入深.有重点.有针对性地介绍了Eclipse插件开发技术,全书分为4篇共24章.第一篇介绍Eclipse平台界面开发的基础知识.包含SWT控件的使用.界面布局.事件处理等内容:第二篇是插件开发核心技术,主要介绍插件开发的核心知识要点,包含行为(Action).视图(ViewPart).编辑器(Editor).透视图(Perspective)等10章的内容.第三篇主要讲述插件开发的高级内容,包含开发高级内容.富client平台技术(R

关于shell脚本基础编程第四篇

shell脚本基础编程第四篇本章主要内容:函数 函数 function:             function 名称 { 命令 ; } 或 name () { 命令 ; }           定义 shell 函数.               创建一个以 NAME 为名的 shell 函数.当作为一个简单的命令启用时,           NAME 函数执行调用 shell 的上下文中的 COMMANDs 命令.当 NAME           被启用时,参数作为 $1...$n 被传递

cocos2d-x 3.2 之 三消类游戏——万圣大作战 (第四篇)

***************************************转载请注明出处:http://blog.csdn.net/lttree******************************************** 呼呼,第四篇咯, 本篇主要讲述 > 时间 > 分数 本篇结束后,整个三消游戏的基本步骤就搞定了 1. 添加时间 一般消除类游戏,要么关卡,要么限制时间,但是关卡的设计很麻烦,个体创作,没有那么多精力, 所以只能通过限制时间来使游戏有些可玩性,但这种可玩性极低啊

认识元数据和IL(中)&lt;第四篇&gt;

书接上回[第二十四回:认识元数据和IL(上)],我们对PE文件.程序集.托管模块,这些概念与元数据.IL的关系进行了必要的铺垫,同时顺便熟悉了以ILDASM工具进行反编译的基本方法认知,下面是时候来了解什么是元数据,什么是IL这个话题了,我们继续. 很早就有说说Metadata(元数据)和IL(中间语言)的想法了,一直在这篇开始才算脚踏实地的对这两个阶级兄弟投去些细关怀,虽然来得没有<第一回:恩怨情仇:is和as>那么迅速,但是Metadata和IL却是绝对重量级的内容,值得我们在任何时间关注

Servlet 2.4 规范之第四篇:Servlet上下文

SRV.3.1    ServletContext接口说明 ServletContext接口定义了运行servlet的web应用中和servlet相关的视图信息.容器提供者负责提供ServletContext的一套具体实现.通过ServletContext对象,servlet能记录事件.获得资源引用,以及设置和保存当前context上其他servlet的一些属性信息. ServletContext以web应用的某一路径为根节点,例如,servlet上下文能写成http://www.mycorp.