这里有一个list,按照先后顺序有一列数字,用索引大的元素减去索引小的元素,求得最大差值
def max_diff_num(arr):
length = len(arr)
if length < 2:
return 0
else:
i = 0
j = 1
(s, e) = (0, 0)
_max = arr[j] - arr[i]
while j < length:
while j < length:
if arr[j] - arr[i] > _max:
_max = arr[j] - arr[i]
(s, e) = (i, j)
j += 1
i += 1
j = i + 1
return _max, s, e
arr = [4, 6, 2, 9, 3, 12, 18, 7, 19]
print max_diff_num(arr)
得出结果 17,2,8
最大收益17,索引为2的时候买入,索引为8的时候卖出。
二、第二种写法,只有一层循环
def max_num_2(arr):
length = len(arr)
if length < 2:
return 0
else:
i = 0
j = 1
_max = arr[j] - arr[i]
while 1:
if arr[j] - arr[i] > _max:
_max = arr[j] - arr[i]
if j < length - 1:
j += 1
else:
i += 1
if i == length - 1:
return _max
j = i + 1
print max_num_2(arr)