python数组元素两两组合_1.1. Python, 数组中任意两元素的最大乘积(快速算法), Maximum Pairwise Product(fast)...

目的:

找出一个数组中任意两个非负数的最大乘积,并且需时较短,符合测试需求。

朴素算法:

算任意两个数的乘积并找出最大值。复杂度O(n^2),想都不要想了,肯定很慢。

快速算法,仅找出最大的两个元素。注意这里用的是元素的顺序index,表示第index个元素。

注意coursera上恶心的检查方式,input不是一行,而是两行。第一行是数组长度,第二行才是数组的元素。

伪代码 sudo code

MaxPairwiseProductFast(A[1...n]):

index1

for i from 2 to n:

if A[i] > A[index1]:

index1

index2

for i from 2 to n:

if A[i] != A[index1] and A[i] > A[index2]:

index2

return A[index1] * A[index2]

Python实现

# Uses python3

len1 = input()

n = input()

a = [int(x) for x in n.strip().split()]

le = int(len1)

# check the largest number's index

index1 = 0

for i1 in range(1,le):

if a[i1] > a[index1] :

index1 = i1

# check the second largest number's index

if index1 == 0 : index2 = 1

else: index2 = 0

for i2 in range(1,le):

if a[i2] > a[index2] and i2 != index1 :

index2 = i2

result = a[index2] * a[index1]

print(result)

参考资料

Coursera

数据结构与算法

美国加州大学圣地亚哥分校

国立高等经济大学

2018.5.13

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值