1. 石子游戏
    亚历克斯和李用几堆石子在做游戏。偶数堆石子排成一行,每堆都有正整数颗石子 piles[i] 。
    游戏以谁手中的石子最多来决出胜负。石子的总数是奇数,所以没有平局。
    亚历克斯和李轮流进行,亚历克斯先开始。 每回合,玩家从行的开始或结束处取走整堆石头。 这种情况一直持续到没有更多的石子堆为止,此时手中石子最多的玩家获胜。
    假设亚历克斯和李都发挥出最佳水平,当亚历克斯赢得比赛时返回 true ,当李赢得比赛时返回 false 。
    示例
    输入:[5,3,4,5]
    输出:true
    解释
    亚历克斯先开始,只能拿前 5 颗或后 5 颗石子 。
    假设他取了前 5 颗,这一行就变成了 [3,4,5] 。
    如果李拿走前 3 颗,那么剩下的是 [4,5],亚历克斯拿走后 5 颗赢得 10 分。
    如果李拿走后 5 颗,那么剩下的是 [3,4],亚历克斯拿走后 4 颗赢得 9 分。
    这表明,取前 5 颗石子对亚历克斯来说是一个胜利的举动,所以我们返回 true 。
    解题思路
    本题看似很麻烦,但是仔细思考可以发现规律,即当数组数目为偶数时,我们总可以得到每层最大的数,比如上面事例,一直目前最外层最大数为5,次外层最大数为4,第一层 的5我们肯定会得到,为了得到次外层最大数,我们只需拿走第一个5,对方拿走最后的5,这个时候我们可以顺利得到次外层最大的数,依次类推,我们总能得到每层最大的数。而当数组数目为奇数时,当我们拿走第一层最大数后,对方会按照上述方法拿到每层的最大数。所以我们可以发现规律即:当数组长度为偶数时,返回ture,当数组数组为奇数时,返回false;
    代码如下:
class Solution {public boolean stoneGame(int[] piles) {return piles.length%2==0;}
}


注意:本题存在一些漏洞,比如当数组第一层存在一个大于其他数总和的数时,只要第一个人拿到该数,则不管数组长度为多少都是该玩家获胜。或着当数组每个元素数字相等,胜利的条件就成了拿的次数。

292.Nim游戏
你和你的朋友,两个人一起玩 Nim 游戏:桌子上有一堆石头,每次你们轮流拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。

你们是聪明人,每一步都是最优解。 编写一个函数,来判断你是否可以在给定石头数量的情况下赢得游戏。
示例:
输入: 4
输出: false
解释: 如果堆中有 4 块石头,那么你永远不会赢得比赛;
因为无论你拿走 1 块、2 块 还是 3 块石头,最后一块石头总是会被你的朋友拿走。
解题思路:
这一题可以尝试从1往后枚举归纳的去寻找题解,1,2,3,4只有4是输掉;
然后5,6,7,8的时候通过最优解让对方去得到4即可,可推知8的情况下是失败的;进而可以推知4的倍数都是无法通过最优操作推到1,2,3,既4的倍数石子会输掉。
代码如下:

class Solution {public boolean canWinNim(int n) {return n%4!=0;}
}


1025.除数博弈
爱丽丝和鲍勃一起玩游戏,他们轮流行动。爱丽丝先手开局。

最初,黑板上有一个数字 N 。在每个玩家的回合,玩家需要执行以下操作:

选出任一 x,满足 0 < x < N 且 N % x == 0 。
用 N - x 替换黑板上的数字 N 。
如果玩家无法执行这些操作,就会输掉游戏。

只有在爱丽丝在游戏中取得胜利时才返回 True,否则返回 false。假设两个玩家都以最佳状态参与游戏。
示例:
输入:2
输出:true
解释:爱丽丝选择 1,鲍勃无法进行操作。
输入:3
输出:false
解释:爱丽丝选择 1,鲍勃也选择 1,然后爱丽丝无法进行操作。
解题思路:
数字N如果是奇数,它的约数必然都是奇数;若为偶数,则其约数可奇可偶。
无论N初始为多大的值,游戏最终只会进行到N=2时结束,那么谁轮到N=2时谁就会赢。因为爱丽丝先手,N初始若为偶数,爱丽丝则只需一直选1,使鲍勃一直面临N为奇数的情况,这样爱丽丝稳赢;N初始若为奇数,那么爱丽丝第一次选完之后N必为偶数,那么鲍勃只需一直选1就会稳赢。综述,判断N是奇数还是偶数,即可得出最终结果!
代码如下:

class Solution {public boolean divisorGame(int N) {return N%2==0;}
}

LeetCode三道脑筋急转弯编程题相关推荐

  1. 从屌丝到高手,三道Python编程题,九种解题算法,看看你属于哪一类

    大家在平时刷题的过程中,不仅仅要注意理解问题的本质,而且要在解决问题的基础上,优化自己的解题思路和程序. 今天,小编就带领大家来进行三道简单问题的解决,从屌丝解法到进阶解法再到高手解法,一步步的带领大 ...

  2. 编程题刷题笔记(包括leetcode和各种公司笔试题)

    7/6: 做的查找中的word_ladder,没做出来. 学到了的知识点: unordered_set: 定义为unordered_set<string>dict 在集合中查找为dict. ...

  3. LeetCode 141. Linked List Cycle--面试编程题--C++,Python解法

    题目地址:Linked List Cycle - LeetCode Given a linked list, determine if it has a cycle in it. To represe ...

  4. MIT微软为AI量身打造了一套leetcode编程题

    丰色 发自 凹非寺 量子位 报道 | 公众号 QbitAI 你见过这种编程题目描述方式吗? 不用自然语言描述,也没有输入输出示例,你所看到的就只有一个Python函数. 这是来自MIT.Allen A ...

  5. 麻省理工、微软为AI量身打造了一套leetcode编程题

    点上方计算机视觉联盟获取更多干货 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:量子位 AI博士笔记系列推荐 周志华<机器学习>手推笔记正式开源!可打印版本附pdf下载链接 你见 ...

  6. 华为秋招机试三道编程题(2021-09-01)

    通知:华为.阿里最新的秋招笔试编程题题目.思路以及参考代码已经全部整理好放在微信公众号[TechGuide]了,私信公众号回复[华为]或者[阿里]即可获得最实时.最详细的笔试题解啦! 通知:华为.阿里 ...

  7. 督促自己——某客网编程题三道(Java)——字符串、集合、数组

    某客网编程题三道(Java)--字符串.集合.数组 第一题: 题目描述 找出字符串中第一个只出现一次的字符 输入描述: 输入几个非空字符串 输出描述: 输出第一个只出现一次的字符,如果不存在输出-1 ...

  8. 2020 华为机试 三道编程题

    投的网络安全岗位,三道编程题.其实不难.... 测试用例都过了.但是.... 第一题,不太熟悉newcode输入输出,python用 for line in sys.stdin 读一行数据有问题,导致 ...

  9. 百度秋招笔试三道编程题(2021-09-07)

    通知:最新的秋招笔试编程题题目.思路以及参考代码已经全部整理好放在[TechGuide]了,私信公众号回复[美团]或者[百度]即可获得最实时的笔试题解啦! 通知:最新的秋招笔试编程题题目.思路以及参考 ...

最新文章

  1. 《研磨设计模式》chap23 职责链模式chainOfResponsibility(1)模式简介
  2. 玩转oracle 11g(21):修改为静态监听
  3. 求之不得的 Java 文档教程大汇总!
  4. lisp编程 滑动轴承的auto_基于Visual Lisp的滑动轴承设计
  5. 网络带宽与实际上传下载速度之间关系
  6. module 'tensorflow.python.keras.backend' has no attribute 'get_graph'
  7. javascript--this机制
  8. ubuntu phpmyadmin 404 not found
  9. C/C++/Java 基本数据类型总结
  10. 小技巧(11):使用PS更换证件照背景颜色(蓝色背景色换成白色背景色)
  11. 放弃 TSLint,使用 ESLint
  12. JDBC的五种连接方式
  13. docker的容器间通信
  14. linux7 清屏,CentOS 清屏命令clear的讲解
  15. 详细分析关于Ip地址计算的题目。
  16. 在自建机房给网站做ICP备案
  17. 从Python爬虫到Spark预处理数据的真实需求[二]
  18. 如何设计 QQ、微信等第三方账号登陆 ?(附表设计)
  19. 2017-4-14校内训练
  20. mysql5.7.28下载安装_Windows下mysql-5.7.28下载、安装、配置教程

热门文章

  1. 初试python爬虫(简单爬取站长之家第一页图片)
  2. 蜣螂优化算法Dung beetle optimizer附matlab代码
  3. 《统计学习方法(第2版)》李航 第19章 马尔可夫蒙特卡罗法 MCMC 思维导图笔记 及 课后全部习题答案(步骤详细, 包含Metropolis算法,吉布斯算法代码实现)第十九章
  4. 家用扫地机器人哪个牌子好?
  5. 15.wireshark学习-网络取证练习2
  6. java nullable_java – 如何更有效地使用@Nullable和@Nonnull注释?
  7. 【Unity3D】正交视图与透视视图 ( 正交视图概念 | 透视视图概念 | 观察点 | 正交视图作用 | 摄像机广角设定 | 透视畸变效果 )
  8. HTTP/3发布了,我们来谈谈HTTP/3
  9. 2021-09-02 基于HAL库的野火STM32F103ZE核心板RTC校准
  10. w3m 设置用户名密码自动登录