-
发表于 2024.05.31
-
双指针典型题目。使用两个指针
i
和j
分别指向A
和B
的区间,然后根据两个区间的交集(两个区间的最大左端点和最小右端点)来更新答案。指针的移动规则是:如果A
区间的右端点小于等于B
区间的右端点(A
区间位于B
左侧,说明A
的下一个区间可能和B
当前区间还是会有交集),那么A
区间的指针i
向右移动;否则B
区间的指针j
向右移动。class Solution: def intervalIntersection(self, firstList: List[List[int]], secondList: List[List[int]]) -> List[List[int]]: i = j = 0 ans = [] while i < len(firstList) and j < len(secondList): min_r = min(firstList[i][1], secondList[j][1]) max_l = max(firstList[i][0], secondList[j][0]) if max_l <= min_r: ans.append([max_l, min_r]) if firstList[i][1] <= secondList[j][1]: i += 1 else: j += 1 return ans
- LC 题目链接
-