檢查是否可以透過在 Python 中新增或減去給定的秒數來回到 12 點鐘
假設我們有一個包含 n 個不同秒數值的陣列。我們必須檢查是否可以從 12 點鐘開始,僅透過新增或減去給定的秒數回到 12 點。我們可以精確地使用所有給定的秒數一次,我們可以新增或減去它。
因此,如果輸入類似於 seconds = [40,90,50],則輸出將為 True,因為它可以先新增 40,然後減去 90,然後再次新增 50。
為了解決這個問題,我們將遵循以下步驟:
- size := 2^(秒陣列的長度)
- 對於 c 從 0 到 size - 1,執行
- add := 0
- 對於 j 從 0 到 seconds 的大小 - 1,執行
- 如果 c AND (2^j) 不為零,則
- add := add + seconds[j]
- 否則,
- add := add - seconds[j]
- 如果 c AND (2^j) 不為零,則
- 如果 add 可以被 (24 * 60) 整除,則
- 返回 True
- 返回 False
示例
讓我們看看以下實現以更好地理解:
def solve(seconds): size = 2**len(seconds) for c in range(size): add = 0 for j in range(len(seconds)) : if c & (1 << j): add += seconds[j] else: add -= seconds[j] if add % (24 * 60) == 0: return True return False seconds = [40,90,50] print(solve(seconds))
輸入
[40,90,50]
輸出
True
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP