九章演算法 位元組跳動面試題 硬幣排成線

2021-10-12 14:46:01 字數 864 閱讀 4151

有 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 個...