【LeetCode】628. 三个数的最大乘积

解题思路
如果数组中全是正数或者全是负数,最大乘积就是最大的三个数的乘积。如果数组中既有正数又有负数,最大乘积可能是三个最大正数乘积,也可能是两个最小负数和最大正数的乘积。遍历数组找到最大的三个数和最小的两个数即可。
代码
class Solution {
    public int maximumProduct(int[] nums) {
        if (nums.length == 3) return nums[0] * nums[1] * nums[2];
        int max1 = Integer.MIN_VALUE, max2 = Integer.MIN_VALUE, max3 = Integer.MIN_VALUE;
        int min1 = Integer.MAX_VALUE, min2 = Integer.MAX_VALUE;
        for (int num : nums) {
            if (num > max1) {
                max3 = max2;
                max2 = max1;
                max1 = num;
            } else if (num > max2) {
                max3 = max2;
                max2 = num;
            } else if (num > max3) {
                max3 = num;
            }
            if (num < min1) {
                min2 = min1;
                min1 = num;
            } else if (num < min2) {
                min2 = num;
            }
        }
        return Math.max(max1 * max2 * max3, max1 * min1 * min2);
    }
}
复杂度分析
- 时间复杂度:O(N),其中N为数组的长度。
- 空间复杂度:O(1)。
【LeetCode】628. 三个数的最大乘积的更多相关文章
- LeetCode 628. 三个数的最大乘积
		题目描述 LeetCode 628. 三个数的最大乘积 给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积. 示例1 输入: [1,2,3] 输出: 6 示例2 输入: [1,2,3 ... 
- Java实现 LeetCode 628 三个数的最大乘积(暴力大法)
		628. 三个数的最大乘积 给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积. 示例 1: 输入: [1,2,3] 输出: 6 示例 2: 输入: [1,2,3,4] 输出: 24 ... 
- LeetCode:三个数的最大乘积【628】
		LeetCode:三个数的最大乘积[628] 题目描述 给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积. 示例 1: 输入: [1,2,3] 输出: 6 示例 2: 输入: [1 ... 
- 力扣(LeetCode)三个数的最大乘积 个人题解
		给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积. 示例 1: 输入: [1,2,3] 输出: 6 示例 2: 输入: [1,2,3,4] 输出: 24 注意: 给定的整型数组长度 ... 
- LeetCode 628. Maximum Product of Three Numbers三个数的最大乘积 (C++)
		题目: Given an integer array, find three numbers whose product is maximum and output the maximum produ ... 
- [Swift]LeetCode628. 三个数的最大乘积 | Maximum Product of Three Numbers
		Given an integer array, find three numbers whose product is maximum and output the maximum product. ... 
- Leetcode628.Maximum Product of Three Numbers三个数的最大乘积
		给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积. 示例 1: 输入: [1,2,3] 输出: 6 示例 2: 输入: [1,2,3,4] 输出: 24 注意: 给定的整型数组长度 ... 
- 【LeetCode】数组-2(628)-数组中三个数相乘最大
		题目不难: 思路一(排序取两端) 先排序,最后三个数相乘即可.(很快就想到了,但是没想全面 [ 
- C#LeetCode刷题之#628-三个数的最大乘积( Maximum Product of Three Numbers)
		问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3726 访问. 给定一个整型数组,在数组中找出由三个数组成的最大乘 ... 
随机推荐
- 资源分配情况(Project)
			<Project2016 企业项目管理实践>张会斌 董方好 编著 资源的分配情况,无非就是未分配.已分配和过度分配三种,这些都可以通过各种视图查看,比如[资源]>[工作组规划器]视图 ... 
- iNeuOS工业互联网操作系统,发布3.6.4版本:云端安全控制和实时日志功能,附Chrome、Firefox和Edge浏览器测试性能对比
			目 录 1. 概述... 2 2. 平台演示... 2 3. 云端控制和实时日志设计和技术... 2 4. 实时日志测试... 2 1. 概述 ... 
- CF41C Email address 题解
			Content 有一个字符串 \(s\),它满足以下要求: 只包含 ..@ 和小写字母. 不以 . 为开头或者结尾. 不以 @ 为开头或者结尾,并只能包含一个 @. 请将其进行如下操作,使得这个字符串 ... 
- 关于Marshal 类的整理
			在两个不同的实体(两个线程或者进程甚至机器.在Managed和Unmanaged之间)进行方法调用和参数传递的时候,具体的调用方法和参数的内存格式可能需要一定的转换,这个转换的过程叫做Marshal. ... 
- DKT模型及其TensorFlow实现(Deep knowledge tracing with Tensorflow)
			今年2月15日,谷歌举办了首届TensorFlow Dev Summit,并且发布了TensorFlow 1.0 正式版. 3月18号,上海的谷歌开发者社区(GDG)组织了针对峰会的专场回顾活动.本文 ... 
- layui(layer)的loading方法显示位置不居中
			要在layer.load之前使用layer.ready方法 layui.use('layer', function () { layer.ready(function(){ index = layer ... 
- JAVA获取当前请求的URL地址,包含请求链接中的参数
			/** * 获得当前访问的URL路径 * @param request * @return */ public static String getLocation(HttpServletRequest ... 
- 【LeetCode】561. Array Partition I 解题报告(Java & Python)
			作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 排序 日期 题目地址:https://leetcod ... 
- 食物链(poj1182)
			食物链 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 57387 Accepted: 16781 Description ... 
- @Transactional 失效
			1.Transactional注解标注方法修饰符为非public时,@Transactional注解将会不起作用. @Transactional void insertTestWrongModi ... 
