有3种常见的算法实现该要求,下面将按效率由低到高依次实现: #-*- coding:gb2312 -*- def f1(arg): """ 求最大序列值算法1,效率O(N3) """ if not isinstance(arg, type([])): return -1 max = sum = 0 for e in arg: for i in arg[arg.index(e):]: sum = 0 for j in arg[arg.index(e):arg.index(i)+1]: sum += j if max < sum: max = sum return max def f2(arg): """ 求最大序列值算法2,效率O(N2) """ if not isinstance(arg, type([])): return -1 max = 0 for e in arg: sum = 0 for i in arg[arg.index(e):]: sum += i if max < sum: max = sum return max def f3(arg): """ 求最大序列值算法3,效率O(N) """ if not isinstance(arg, type([])): return -1 max = sum = 0 for e in arg: sum += e if max < sum: max = sum elif sum < 0: sum = 0 return max if __name__ == "__main__": print(f1([1,2,3,4,5,6,7])) print(f2([1,-2,3,4,-5,-6,7])) print(f3([1,2,-3,4,5,-6,7])) 三种方法时间花费依次是O(N3),O(N2),O(N)。 并且程序只判断了输入参数是否是list类型,并没有验证list中的元素的类型,是个漏洞。