本文主要是介绍Leetcode 292. Nim Game,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Problem
You are playing the following Nim Game with your friend:
- Initially, there is a heap of stones on the table.
- You and your friend will alternate taking turns, and you go first.
- On each turn, the person whose turn it is will remove 1 to 3 stones from the heap.
- The one who removes the last stone is the winner.
Given n, the number of stones in the heap, return true if you can win the game assuming both you and your friend play optimally, otherwise return false.
Algorithm
First find the transfer equation: If (n < 4), then f(n) = True. If (f(n-1) & f(n-2) & f(n-3) == 1), then f(n) = False. If (f(n-1) | f(n-2) | f(n-3) == 0), then f(n) = 1.
So if (n % 4 == 0), then f(n) = 0, else f(n) = 1.
Code
class Solution:def canWinNim(self, n: int) -> bool:return n % 4 > 0
这篇关于Leetcode 292. Nim Game的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!