首页 / PYTHON / Leetcode练习(Python):数组类:第57题:给出一个无重叠的 ,按照区间起始端点排序的区间列表。 在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合
Leetcode练习(Python):数组类:第57题:给出一个无重叠的 ,按照区间起始端点排序的区间列表。 在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Leetcode练习(Python):数组类:第57题:给出一个无重叠的 ,按照区间起始端点排序的区间列表。 在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3626字,纯文字阅读大概需要6分钟。
内容图文
![Leetcode练习(Python):数组类:第57题:给出一个无重叠的 ,按照区间起始端点排序的区间列表。 在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合](/upload/InfoBanner/zyjiaocheng/635/488fc78660ea46b28ee1611441eed03b.jpg)
给出一个无重叠的 ,按照区间起始端点排序的区间列表。
在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。
思路:开始使用纯逻辑的思路,使用了大量的判断,如程序2所示,可以通过题目的两个例子,但是在自创例子时出现了超时的提示。看了一个大神的程序,然后模仿了下来,如程序1,写的很精巧。
程序1:
class?Solution: ????def?insert(self,?intervals:?List[List[int]],?newInterval:?List[int])?->?List[List[int]]: ????????intervals.sort(key?=?lambda?data?:?data[0]) ????????length?=?len(intervals) ????????index?=?0 ????????auxiliary_index?=?0 ????????while?index?<?length: ????????????if?newInterval[1]?<?intervals[index][0]: ????????????????break ????????????elif?newInterval[0]?>?intervals[index][1]: ????????????????pass ????????????else: ????????????????newInterval[0]?=?min(newInterval[0],?intervals[index][0]) ????????????????newInterval[1]?=?max(newInterval[1],?intervals[index][1]) ????????????????auxiliary_index?+=?1 ????????????index?+=?1 ????????if?auxiliary_index?>?0: ????????????intervals?=?intervals[:?index?-?auxiliary_index]?+?intervals[index?:] ????????intervals.insert(index?-?auxiliary_index,?newInterval)? ????????return?intervals ? 程序2: class?Solution: ????def?insert(self,?intervals:?List[List[int]],?newInterval:?List[int])?->?List[List[int]]: ????????intervals.sort(key?=?lambda?data?:?data[0]) ????????index?=?1 ????????while?index?<?len(intervals): ????????????if?newInterval[0]?>=?intervals[index?-?1][0]?and?newInterval[0]?<?intervals[index?-?1][1]: ????????????????if?newInterval[1]?>=?intervals[index?-?1][1]?and?newInterval[1]?<?intervals[index][0]: ????????????????????intervals[index?-?1][0]?=?intervals[index?-?1][0] ????????????????????intervals[index?-?1][1]?=?newInterval[1] ????????????????elif?newInterval[1]?<=?intervals[index?-?1][1]: ????????????????????intervals[index?-?1][0]?=?intervals[index?-?1][0] ????????????????????intervals[index?-?1][1]?=?intervals[index?-?1][1] ????????????????elif?intervals[index][0]?<=?newInterval[1]?and?newInterval[1]?<?intervals[index][1]: ????????????????????intervals[index?-?1][0]?=?intervals[index?-?1][0] ????????????????????intervals[index?-?1][1]?=?intervals[index][1] ????????????????elif?newInterval[1]?>=?intervals[index][1]: ????????????????????#del?intervals[index] ????????????????????intervals[index?-?1][0]?=?intervals[index?-?1][0] ????????????????????intervals[index?-?1][1]?=?newInterval[1] ????????????????????del?intervals[index] ????????????elif?newInterval[1]?<?intervals[index?-?1][0]:? ????????????????intervals.insert(index?-?1,?newInterval) ????????????elif?newInterval[0]?>?intervals[index?-?1][1]: ????????????????if?newInterval[1]?<?intervals[index][0]: ????????????????????intervals.insert(index,?newInterval) ????????????????elif?newInterval[1]?>=?intervals[index][0]?and?newInterval[1]?<?intervals[index][1]: ????????????????????del?intervals[index] ????????????????????intervals[index][0]?=?newInterval[0] ????????????????????intervals[index][1]?=?newInterval[1] ????????????????elif?newInterval[1]?>=?intervals[index][0]?and?newInterval[1]?>=?intervals[index][1]: ????????????????????del?intervals[index] ????????????????????intervals[index][0]?=?newInterval[0] ????????????????????intervals[index][1]?=?newInterval[1] ????????????index?+=?1 ? ? ? ? index_1 =?1 ????????while?index_1 <?len(intervals): ????????????if intervals[index_1][0]?<= intervals[index_1 - 1][1]: ? ? ? ? ? ? ? ? intervals[index_1 - 1][1]?=?max(intervals[index_1 - 1][1], intervals[index_1][1]) ????????????????del intervals[index_1] ????????????else: ????????????????index_1 +=?1 ????????return?intervals内容总结
以上是互联网集市为您收集整理的Leetcode练习(Python):数组类:第57题:给出一个无重叠的 ,按照区间起始端点排序的区间列表。 在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合全部内容,希望文章能够帮你解决Leetcode练习(Python):数组类:第57题:给出一个无重叠的 ,按照区间起始端点排序的区间列表。 在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。