牛客网 - 2018校招真题

最大乘积 - 拼多多

题目描述
给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大,要求时间复杂度:O(n),空间复杂度:O(1)
输入描述:
无序整数数组A[n]
输出描述:
满足条件的最大乘积
示例1
输入
3 4 1 2
输出
24

n = int(input().strip()) # 题目上没说输入n呀,看了答案才加了这一行,汗...

list = list(map(int, input().strip().split()))
# list = [int(i) for i in input().strip().split() ]

list = sorted(list)
# list.sort()
try:
    ans = max(list[-1] * list[-2] * list[-3], list[0] * list[1] * list[-1])
    print(ans)
except:
    print(0)

补充:

虽然python3中sort()和sorted()都可以用来排序,但二者有以下两个最主要的区别:

1. sort只能应用在列表list上,而sorted可以对所有可迭代的对象进行排序的操作
2. sort方法会在原list上直接进行排序,不会创建新的list。而sorted()函数只会返回一个排序后的当前对象的副本,而不会改变当前对象。

猜你喜欢

转载自www.cnblogs.com/tanrong/p/10553255.html