weekly contest 408。

題目

輸入正整數陣列 nums。

Alice 和 Bob 在玩遊戲。
Alice 可以選擇 nums 中所有一位數的數字,或是所有兩位數的數字。而沒選中的都給 Bob。
如果 Alice 的數字總和嚴格大於 Bob 的數字總和,則 Alice 獲勝。

若 Alice 可以獲勝則回傳 true,否則回傳 false。

解法

nums 中的數可以分成兩種:

  • 一位數 (x <= 10)
  • 二位數 (10 <= x <= 99)

按照題意模擬,將數分成兩份。
只要兩份不相等,則 Alice 可以選擇總和較大者獲勝;否則平手。

時間複雜度 O(N)。
空間複雜度 O(1)。

class Solution:
    def canAliceWin(self, nums: List[int]) -> bool:
        a = b = 0
        for x in nums:
            if x < 10:
                a += x
            else:
                b += x

        return a != b