lintcode 硬幣排成線

2021-09-11 02:46:05 字數 425 閱讀 5249

有 n 個硬幣排成一條線。兩個參賽者輪流從右邊依次拿走 1 或 2 個硬幣,直到沒有硬幣為止。拿到最後一枚硬幣的人獲勝。

請判定 先手玩家 必勝還是必敗?

若必勝, 返回 true, 否則返回 false.

輸入: 4

輸出: true

解釋:先手玩家第一輪拿走乙個硬幣, 此時還剩三個.

這時無論後手玩家拿乙個還是兩個, 下一次先手玩家都可以把剩下的硬幣拿完.

o(1) 時間複雜度且o(1) 儲存。

因為一次只能拿1個或者2個,所以如果只剩下3個是必輸的。所以問題就可以轉化成,拿走一次之後,能否剩下3個。這就意味著,若現在有n個硬幣,誰先拿走倒數第四個,誰就贏了。於是 fn = fn-3,問題就解決了。

class solution 

};

lintcode 硬幣排成線2

有 n 個不同價值的硬幣排成一條線。兩個參賽者輪流從 左邊 依次拿走 1 或 2 個硬幣,直到沒有硬幣為止。計算兩個人分別拿到的硬幣總價值,價值高的人獲勝。請判定 先手玩家 必勝還是必敗?若必勝,返回 true,否則返回 false.樣例 1 輸入 1,2,2 輸出 true 解釋 先手玩家直接拿走...

lintcode 394 硬幣排成線

有 n 個硬幣排成一條線。兩個參賽者輪流從右邊依次拿走 1 或 2 個硬幣,直到沒有硬幣為止。拿到最後一枚硬幣的人獲勝。請判定 第乙個玩家 是輸還是贏?樣例n 1,返回 true.n 2,返回 true.n 3,返回 false.n 4,返回 true.n 5,返回 true.挑戰o 1 時間複雜度...

硬幣排成線

題目 有 n 個硬幣排成一條線。兩個參賽者輪流從右邊依次拿走 1 或 2 個硬幣,直到沒有硬幣為止。拿到最後一枚硬幣的人獲勝。請判定 先手玩家 必勝還是必敗?若必勝,返回 true,否則返回 false.樣例樣例 1 輸入 1 輸出 true 樣例 2 輸入 4 輸出 true 解釋 先手玩家第一輪...