求n个整数里,连续m个整数乘积最大的一组。如:[1,2,4,5,3,4]m为2时, 1,2 2,4
4,5 5,3 都是连续的两个数,其中 4,5的乘积是最大的。
下面是我用,列表推导、reduce 、列表排序,实现的算法。供参考。
def s5(array, m):标签:练习,23,56,reduce,整数,算法,s5,array From: https://blog.51cto.com/fangkailove/5881789
"""
在一个由N个整数组成的数组中,取出连续M个数,使其乘积是最大的(M<N)。
:param lst:
:return:
"""
from functools import reduce
list_rlt = [(reduce(lambda x, y: x * y, array[i:i + m]), i) for i in range(0, len(array) - m + 1, 1)]
list_rlt.sort(key=lambda x: x[0], reverse=True)
_, i = list_rlt[0]
print("最大积:", _, "位置:", i, "连续整数:", array[i:i + m])
return array[i:i + m]
#测试
s5([1, 29, 5, 6, 7, 0, 12, 56, 5, 23, 6], 3)
s5([1, 29, 5, 6, 7, 0, 12, 56, 5, 23, 6], 2)
输出
-----------------------------
最大积: 6440 位置: 7 连续整数: [56, 5, 23]
最大积: 672 位置: 6 连续整数: [12, 56]