其实不需要排序
class Solution:
def solve(self , A ):
# write code here
#其实就是找到两个相乘最大的正数和一个没用到的最小的正数;
# 或者是相乘最小的负数和一个最小的没用到的负数
# 那其实就是全部相乘后排序
if len(A) < 3:
return 0
A = sorted(A)
if A[0] >= 0:
return A[-1] * A[-2] * A[-3]
if A[-1] <= 0:
return A[0]*A[1]*A[2]
res = max(A[0] * A[1] * A[-1], A[-1]*A[-2]*A[-3])
return res
class Solution:
def solve(self , A ):
if len(A) < 3:
return 0
#其实就是要最大的三个正数或者是最大的一个正数,最小的两个负数
large_t = [float("-inf"), float("-inf"), float("-inf")]
small_t = [float("inf"), float("inf")]
for i in range(len(A)):
if A[i] > min(large_t):
large_t.remove(min(large_t))
large_t.append(A[i])
if A[i] < max(small_t):
small_t.remove(max(small_t))
small_t.append(A[i])
return max(large_t[0]*large_t[1]*large_t[2], \
max(large_t)*small_t[0]*small_t[1])