给定一个 24 小时制(小时:分钟 “HH:MM”)的时间列表,找出列表中任意两个时间的最小时间差并以分钟数表示。
class Solution(object):
def findMinDifference(self, timePoints):
"""
:type timePoints: List[str]
:rtype: int
"""
ans = 24 * 60
times = [0] * len(timePoints)
for i,time in enumerate(timePoints):
h, m = map(int, time.split(":"))
times[i] = h * 60 + m
times.sort()
for i in range(len(times) - 1):
ans = min(ans, abs(times[i] - times[i+1]))
return min(ans,1440 - abs(times[0]-times[-1]))
1306 跳跃游戏 III 这里有一个非负整数数组 arr,你最开始位于该数组的起始下标 start 处。当你位于下标 i 处时,你可以跳到i + arr[i] 或者 i - arr[i]。 请你判断自己是否能够跳到对应元素值为 0 的任一下标处。
注意,不管是什么情况下,你都无法跳到数组之外。来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/jump-game-iii
# 广度优先搜索
class Solution:
def canReach(self, arr: List[int], start: int) -> bool:
if arr[start] == 0:
return True
n = len(arr)
used = {start}
q = collections.deque([start])
while len(q) > 0:
u = q.popleft()
for v in [u + arr[u], u - arr[u]]:
if 0 <= v < n and v not in used:
if arr[v] == 0:
return True
q.append(v)
used.add(v)
return False