首页 > 编程语言 >算法练习1

算法练习1

时间:2022-11-23 22:33:52浏览次数:88  
标签:练习 23 56 reduce 整数 算法 s5 array


 求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):
"""
在一个由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]

标签:练习,23,56,reduce,整数,算法,s5,array
From: https://blog.51cto.com/fangkailove/5881789

相关文章