有 n 個硬幣排成一條線。兩個參賽者輪流從右邊依次拿走 1 或 2 個硬幣,直到沒有硬幣為止。拿到最後一枚硬幣的人獲勝。
請判定先手玩家必勝還是必敗?
若必勝, 返回 true, 否則返回 false.
樣例 1:
輸入:
1輸出:
true
樣例2:
輸入:
4輸出:
true
解釋:先手玩家第一輪拿走乙個硬幣
,此時還剩三個
.這時無論後手玩家拿乙個還是兩個
,下一次先手玩家都可以把剩下的硬幣拿完
.
o(1) 時間複雜度且o(1) 儲存。
博弈(巴什博弈)
n=1n=1 或 n=2n=2 時,先手玩家可以 1 次將所有硬幣拿走,先手必勝。
n=3n=3 時,先手玩家拿走 1 個,則後手玩家拿走 2 個;先手玩家拿走 2 個,則後手玩家拿走 1 個;先手必敗。
n=4n=4 時,先手玩家先拿走 1 個,此時對於後手玩家來說,他剩下 3 個,面臨著 (2) 的情況。根據 (2) 的分析,先手必勝。
n=5n=5 時,先手玩家先拿走 2 個,此時對於後手玩家來說,他面臨著 (2) 的情況。根據 (2) 的分析,先手必勝。
n=6n=6 時,無論先手玩家怎麼取 x 個,後手玩家都可以取 3-x 個,另先手玩家剩下 3 個,面臨著 (2) 的情況。根據 (2) 的分析,先手必勝。
public class solution
}
九章演算法題解
九章演算法 位元組跳動面試題 字串查詢 II
描述 實現時間複雜度為 o n m 的方法 strstr。strstr 返回目標字串在源字串中第一次出現的第乙個字元的位置.目標字串的長度為 m 源字串的長度為 n 如果目標字串不在源字串中則返回 1。lintcode 領扣 樣例1 輸入 source abcdef target bcd 輸出 1 ...
位元組跳動面試題
位元組跳動面試題 http協議 http協議是乙個應用層的協議,由請求和響應構成,使用統一資源識別符號來傳遞資料和建立連線 一次http請求的基本流程一般是,在建立tcp連線後,由客戶端向服務端發起一次請求 request 而伺服器在接收到以後返回給客戶端乙個響應 response 所以我們看到的h...
位元組跳動面試題
假如有兩台伺服器 server1和server2 這兩台伺服器上分別部署了相同的前端靜態檔案,index.html index.js 如果server1中的靜態資源被更新了,那麼此時會出現什麼問題?如何解決?通過控制 伺服器,讓客戶無感平滑公升級 root 當前頁面共有 files.length 個...