Given an integer array, find three numbers whose product is maximum and output the maximum product.

Example 1:

Input: [1,2,3]
Output: 6

Example 2:

Input: [1,2,3,4]
Output: 24

Note:

  1. The length of the given array will be in range [3,104] and all elements are in the range [-1000, 1000].
  2. Multiplication of any three numbers in the input won't exceed the range of 32-bit signed integer.

这个题目就是需要注意负数的情况即可, 我们如果用排序的话, 比较max(nums[0]*nums[1]*nums[-1], nums[-1]*nums[-2]*nums[-3])即可. T: O(nlgn)

要T: O(n) 的话就需要得到min1, min2, max1, max2, max3同理比较max(min1 * min2 * max1, max1 * max2 * max3)即可.

Code

1) T: O(nlgn)

class Solution:
def maxProduct3nums(self, nums):
nums.sort()
return max(nums[0]*nums[1]*nums[-1], nums[-1]*nums[-2]*nums[-3])

2) T: O(n)

class Solution:
def maxProduct3nums(self, nums):
ans = [1001]*2 + [-1001]*3 # min1, min2, max1, max2, max3
for num in nums:
if num > ans[-1]:
ans[-1], ans[-2], ans[-3] = num, ans[-1], ans[-2]
elif num > ans[-2]:
ans[-2], ans[-3] = num, ans[-2]
elif num > ans[-3]:
ans[-3] = num
if num < ans[0]:
ans[0], ans[1] = num, ans[0]
elif num < ans[1]:
ans[1] = num
return max(ans[0]*ans[1]*ans[-1], ans[-1]*ans[-2]*ans[-3])

 
 

最新文章

  1. ASP.NET MVC5+EF6+EasyUI 后台管理系统(64)-WebApi与Unity注入
  2. 使用Github进行合作开发
  3. 【转】asp.net(c#)加密解密算法之sha1、md5、des、aes实现源码详解
  4. Redis学习笔记1-Redis的介绍和认识
  5. Dubai Princess and Prince!
  6. select 支持宽高(高度有兼容问题);
  7. Java编程思想学习(十五) 注解
  8. list删除操作 java.util.ConcurrentModificationException
  9. DELPHI 多线程
  10. SQl为表添加和删除列
  11. java进程卡死问题
  12. SSRS 系列 - 使用带参数的 MDX 查询实现一个分组聚合功能的报表
  13. 关于CSRF的攻击
  14. [补档][Lydsy2017年4月月赛]抵制克苏恩
  15. Hive案例05-学生成绩表综合案例
  16. bindpose定义
  17. 【XMPP】Smack源码之消息接收与解析
  18. Java 强制类型转换
  19. SpringBoot 中常用注解@Controller/@RestController/@RequestMapping的区别
  20. js - 预加载+监听图片资源加载制作进度条

热门文章

  1. Delphi Code Editor 之 几个特性
  2. java框架----&gt;commonmark的使用(一)
  3. 12个常用的JavaScript技巧
  4. ACE学习简单记录
  5. !important:element.style 覆盖样式问题
  6. ASP.NET MVC 使用Redis共享Session
  7. Tomcat应用的部署记录
  8. 【CF888G】Xor-MST Trie树(模拟最小生成树)
  9. lombok 转载
  10. Python3中关于下划线变量和命名的总结