-
发表于 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 题目链接
-