Leetcode: Nim Game
LeetCode Game NIM
2023-09-11 14:14:07 时间
You are playing the following Nim Game with your friend: There is a heap of stones on the table, each time one of you take turns to remove 1 to 3 stones. The one who removes the last stone will be the winner. You will take the first turn to remove the stones. Both of you are very clever and have optimal strategies for the game. Write a function to determine whether you can win the game given the number of stones in the heap. For example, if there are 4 stones in the heap, then you will never win the game: no matter 1, 2, or 3 stones you remove, the last stone will always be removed by your friend.
因为每个人都取不到4个,假设自己后走,要保证每轮自己和对方取得数量的和是4,这样就能确保每轮完后都有4的倍数个石头被取走。这样,如果我们先走的话,先把n除4的余数个石头拿走,这样不管怎样,到最后都会留4个下来,对方取1个你就取3个,对方取2个你就取2个,就必赢了。
如果一开始就是4的倍数,你就输了,因为对方可以用同样的策略
1 public class Solution { 2 public boolean canWinNim(int n) { 3 return n%4 != 0; 4 } 5 }
相关文章
- Java实现 LeetCode 347 前 K 个高频元素
- Java实现 LeetCode 310 最小高度树
- Java实现 LeetCode 143 重排链表
- Java实现 LeetCode 121 买卖股票的最佳时机
- Java实现 LeetCode 82 删除排序链表中的重复元素 II(二)
- 【贪心】LeetCode 714. 买卖股票的最佳时机含手续费【中等】
- 【LeetCode Python实现】356. 直线镜像(中等)
- Leetcode 387. 字符串中的第一个唯一字符(已解决)
- Leetcode 1460. 通过翻转子数组使两个数组相等
- [LeetCode] 95. 不同的二叉搜索树 II ☆☆☆(递归,n个数组成的所有二叉搜索树)
- [LeetCode] 45. Jump game II ☆☆☆☆☆(跳跃游戏 2)
- Leetcode--Two Sum
- Leetcode_num3_Same Tree
- leetcode第一刷_Jump Game
- leetcode 292. Nim Game
- leetcode 682. Baseball Game
- 【Leetcode刷题Python】LeetCode 478. 在圆内随机生成点
- 【Leetcode刷题Python】 LeetCode 2038. 如果相邻两个颜色均相同则删除当前颜色