如果未排序列表中当前元素右侧的元素较大,则需要找到元素之间的最大差值。例如:
myList = [2, 3, 8, 0, 7].
该功能应按以下方式进行计算:
present element = 2.
is 3 > 2? Yes. Then 3-2 = 1
is 8 > 2? Yes. Then 8-2 = 6
is 0 > 2? No. Go to the next element.
is 7 > 2? Yes. Then 7-2 = 5 and so on
Finally my output = 7
我的第一种解决方案如下:
def maxDiff(a):
l = len(a)
arr = []
for i in range(l-1):
for j in range(i+1, l):
if a[j] > a[i]:
diff = a[j] - a[i]
arr.append(diff)
return (max(arr))
我听说这不是最优解决方案。我提出了另一种解决方案,如下所示:
def maxDiff(a):
l = len(a)
diffList = []
for i in range(l-1):
newList = a[i+1:]
max1 = max(newList)
difference = max1 - a[i]
diffList.append(difference)
return (max(diffList))
我的问题是第二种解决方案正确吗?如果是,那么它是否是最优的?这两个函数的时间复杂度是什么?是否有其他更优的解决方案?
print(max(a)-min(a))
有什么问题? - srinath samala