Can I Win LeetCode solution in Python
1class Solution:2def canIWin(self, maxChoosableInteger: int, desiredTotal: int) -> bool:3remainder = [i + 1 for i in range(maxChoosableInteger)] # numbers45@cache6def can_win(total, remainder):7if total >= desiredTotal:8return False # total is already exceed the desiredTotal. Opponent won.910for num in remainder:11if (12can_win(total + num, tuple([n for n in remainder if n != num]))13== False14): # if opponent lose, I win(return True)15return True16return False1718if desiredTotal == 0:19return True20if sum(remainder) < desiredTotal: # Both of two cannot win.21return False22return can_win(0, tuple(remainder))