-
发表于 2024.05.09
-
给植物浇水I的双指针扩展,同样也是模拟的方式,一个从左到右,另一个从右往左,直至两者相遇。需要处理的特殊情况是两者最后刚好落在同一个地方,此时只要双方其一有足够的水即可,否则需要结果
+1
。class Solution: def minimumRefill(self, plants: List[int], capacityA: int, capacityB: int) -> int: cur_cap_a, cur_cap_b = capacityA, capacityB a, b = 0, len(plants) - 1 ans = 0 while a < b: if cur_cap_a < plants[a]: ans += 1 cur_cap_a = capacityA - plants[a] else: cur_cap_a -= plants[a] if cur_cap_b < plants[b]: ans += 1 cur_cap_b = capacityB - plants[b] else: cur_cap_b -= plants[b] a += 1 b -= 1 # 双方落在同一个植物上的处理: 谁有水就谁浇, 否则任一补充即可 # max(plants[i]) <= capacityA, capacityB <= 10⁹ if a == b and cur_cap_a < plants[a] and cur_cap_b < plants[b]: ans += 1 return ans
- LC 题目链接
-