56. 合并区间(中等)
以数组intervals表示若干个区间的集合其中单个区间为intervals[i] [starti, endi]。请你合并所有重叠的区间并返回一个不重叠的区间数组该数组需恰好覆盖输入中的所有区间。示例 1输入intervals [[1,3],[2,6],[8,10],[15,18]]输出[[1,6],[8,10],[15,18]]解释区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2输入intervals [[1,4],[4,5]]输出[[1,5]]解释区间 [1,4] 和 [4,5] 可被视为重叠区间。示例 3输入intervals [[4,7],[1,4]]输出[[1,7]]解释区间 [1,4] 和 [4,7] 可被视为重叠区间。提示1 intervals.length 104intervals[i].length 20 starti endi 104class Solution: def merge(self, intervals: List[List[int]]) - List[List[int]]: intervals.sort() ans[] for p in intervals: if ans and p[0]ans[-1][1]: ans[-1][1]max(ans[-1][1],p[1]) else: ans.append(p) return ans首先把数组按照第一个值进行排序直接用sort函数就是按照第一个值排序。如果要按照第二个的话就可以写成intervals.sort(key:lambda p:p[1])。遍历intervals里面的数组第一次开始遍历ans还为空所以直接把第一组数组p加入到ans里去。从第二组开始判断数组p的左边界是不是小于或等于上一个已经放到ans里的区间的右边界如果是就可以合并那么ans里上一个区间的右边界就变成当前右边界和p的右边界的最大值。如果p左边界大于ans上一个区间的右边界说明没有重叠那么把当前的p加入到ans里去。最后返回ans。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2424041.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!