检查是否可以通过在 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