LeetCode演算法題292 Nim遊戲解析

2021-09-01 07:51:30 字數 715 閱讀 6338

你和你的朋友,兩個人一起玩 nim遊戲:桌子上有一堆石頭,每次你們輪流拿掉 1 - 3 塊石頭。 拿掉最後一塊石頭的人就是獲勝者。你作為先手。

你們是聰明人,每一步都是最優解。 編寫乙個函式,來判斷你是否可以在給定石頭數量的情況下贏得遊戲。

示例:

輸入: 4

輸出: false

解釋: 如果堆中有 4 塊石頭,那麼你永遠不會贏得比賽;

因為無論你拿走 1 塊、2 塊 還是 3 塊石頭,最後一塊石頭總是會被你的朋友拿走。

這個題想通了就很簡答,首先如果要贏那麼最後只剩下4塊石頭給對方拿,那麼往回反推,永遠都是需要留下4塊石頭,也就是說想贏的話只要你拿完之後剩下的是4的倍數,那麼絕對可以贏,而如果一開始給的數就是4的倍數那麼就絕對贏不了了。

c++源**:

class

solution

};

python3源**:

class

solution

:def

canwinnim

(self, n)

:"""

:type n: int

:rtype: bool

"""if n%4==

0:return

false

else

:return

true

LeetCode 演算法題

給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 ...

Leetcode演算法題

56.合併區間 給出乙個區間的集合,請合併所有重疊的區間。示例 1 輸入 intervals 1,3 2,6 8,10 15,18 輸出 1,6 8,10 15,18 解釋 區間 1,3 和 2,6 重疊,將它們合併為 1,6 示例 2 輸入 intervals 1,4 4,5 輸出 1,5 解釋 ...

Leetcode演算法題

20 有效的括號 題目描述 給定乙個只包括 的字串 s 判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。示例 示例 1 輸入 s 輸出 true 示例 2 輸入 s 輸出 true 示例 3 輸入 s 輸出 false 示例 4 輸入 s 輸出 fal...