如何解决无法了解该算法的空间复杂性?
我无法理解https://leetcode.com/problems/merge-intervals/solution/问题解决方案的空间复杂性。
class Solution:
def merge(self,intervals: List[List[int]]) -> List[List[int]]:
intervals.sort(key=lambda x: x[0])
merged = []
for interval in intervals:
# if the list of merged intervals is empty or if the current
# interval does not overlap with the previous,simply append it.
if not merged or merged[-1][1] < interval[0]:
merged.append(interval)
else:
# otherwise,there is overlap,so we merge the current and previous
# intervals.
merged[-1][1] = max(merged[-1][1],interval[1])
return merged
在合并的第六行= []中,数据将添加到此列表中(取决于测试用例中给定列表的大小)。那么为什么说空间复杂度是o(1)而不是o(n)。我是新来的。
解决方法
如果您查看解决方案的说明,则会在底部看到:
空间复杂度:O(1)或O(n)
这意味着在最佳情况下为O(1)
,即所有间隔合并为一个间隔的情况,例如
intervals_list = [[1,3],[2,5],[4,8],[6,10]]
所有这些都可以合并为单个间隔[1,10]
所以在这种情况下,空间是恒定的。
现在让我们进入最坏的情况场景,其中空间复杂度将为O(n)
intervals_list = [[1,[5,[9,11],[13,17]]
这些间隔都不能合并,因此存储在merged
中的最终结果将与intervals_list
完全相同,即与输入的大小相同,因此O(n)
的复杂性
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。