问题遇到的现象和发生背景
已知intervals是含有n项[start,end]的数对组,例如
代码块一是自己写的,代码块二是标准答案
问题相关代码,请勿粘贴截图
代码块一
class Solution:
def findRightInterval(self, intervals: List[List[int]]) -> List[int]:
n=len(intervals)
indexlist=[]
for i in range(n):
indexlist.append(intervals[i][0])
list1=sorted(indexlist)
ans=[]
for i in range(n):
x=bisect.bisect_left(list1,intervals[i][1])
if intervals[i][1]>list1[-1]:
x=-1
else:
x=indexlist.index(list1[x])
ans.append(x)
return ans
代码块二
class Solution:
def findRightInterval(self, intervals: List[List[int]]) -> List[int]:
for i, interval in enumerate(intervals):
interval.append(i)
intervals.sort()
n = len(intervals)
ans = [-1] * n
for _, end, id in intervals:
i = bisect_left(intervals, [end])
if i < n:
ans[id] = intervals[i][2]
return ans
运行结果及报错内容
感觉自己的代码复杂度和代码块二时间复杂度都是nlogn,但是运行时间差二十倍
都是sorted,一个for循环和二分法,算下来应该是nlogn才对
我想要达到的结果
希望能知道我的代码块一的时间复杂度和代码块二有没有差距