
LeetCode 628. 三个数的最大乘积 java版
发布日期:2025-04-04 23:50:16
浏览次数:13
分类:精选文章
本文共 2132 字,大约阅读时间需要 7 分钟。
1. 官网:
2. 题目:
给你一个整型数组
nums
,在数组中找出由三个数组成的最大乘积,并输出这个乘积。示例 1:
输入:nums = [1,2,3]输出:6示例 2:
输入:nums = [1,2,3,4]输出:24示例 3:
输入:nums = [-1,-2,-3]输出:-6提示:
3 <= nums.length <= 104
-1000 <= nums[i] <= 1000
3. 解:
思路:1. 给数组排序 (Arrays.sort),如果没有这个sort 你会用什么排序呢?
2. 取数组最大三个数相乘
3. 两个负数和一个正整数乘积,也需要加入判断
package com.nami.algorithm.study.maxnum;import java.util.Arrays;/** * 描述: 三个数的最大乘积 * * @Author: lbc * @Date: 2024-04-16 16:09 * @email: 594599620@qq.com * @Description: keep coding */public class Solution { /** * 正常思路 排序后,最大三个数乘积即可 * 如果没有例子,两个负数和一个整数 这个条件容易遗忘。就会变成 ·1.排序 ·2.return,取最大三个数的乘积 * * @param nums * @return */ public static int maximumProduct(int[] nums) { // DualPivotQuicksort 包含多种排序,根据数量判断使用 哪种排序算法 // 这个sort 方法 比这道题nb Arrays.sort(nums); int len = nums.length; return Math.max(nums[0] * nums[1] * nums[len - 1], nums[len - 1] * nums[len - 2] * nums[len - 3]); } public static void main(String[] args) { int[] nums = new int[]{1, 4, 6, 8, 320, 33, -200, -100, 20}; System.out.println(maximumProduct(nums)); }}
4. 解2:
解1的延伸,解1 是排序,找到最小数,次最小数,最大数,次最大数,次次最大数,一次遍历找出五个数,可以不用排序算法,再进行判断
1. 找出五个数
2. 同上,计算最大数乘积,与最小数 * 次最小数 * 最大数乘积,判断最大值
public static int maximumProduct(int [] nums) { // 最小值 int min1 = Integer.MAX_VALUE; // 次最小值 int min2 = Integer.MAX_VALUE; // 最大值 int max1 = Integer.MIN_VALUE; // 次大值 int max2 = Integer.MIN_VALUE; // 次次大 int max3 = Integer.MIN_VALUE; for (int cur : nums) { if (cur < min1) { min2 = min1; min1 = cur; } else if (cur < min2) { min2 = cur; } if (cur > max1) { max3 = max2; max2 = max1; max1 = cur; } else if (cur > max2) { max3 = max2; max2 = cur; } else if (cur > max3) { max3 = cur; } } return Math.max(min1 * min2 * max1, max1 * max2 * max3); }
5. 排序算法: 冒泡,快排,堆排序,插入,希尔排序,桶?哪个是稳定排序?,还记得思路以及实现代码吗?
发表评论
最新留言
很好
[***.229.124.182]2025年05月03日 10时48分39秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Java基础学习总结(66)——配置管理库typesafe.config教程
2023-01-28
Java基础学习总结(67)——Java接口API中使用数组的缺陷
2023-01-28
Java基础学习总结(70)——开发Java项目常用的工具汇总
2023-01-28
Java基础学习总结(73)——Java最新面试题汇总
2023-01-28
Java基础学习总结(75)——Java反射机制及应用场景
2023-01-28
Java基础学习总结(76)——Java异常深入学习研究
2023-01-28
Java基础系列
2023-01-29
Kubernetes 自定义服务的启动顺序
2023-01-29
Java基础:Character 类概念、构造函数、实例方法、类方法
2023-01-29
Kubernetes 资源调度详解
2023-01-29
Java基础:StringBuffer类概念、构造函数、常用方法
2023-01-29
Kubernetes 部署 kubeflow1.7.0
2023-01-29
Java基础:变量(声明、赋值、引用)、基本数据类型、作用域
2023-01-29
Java基础:如何编写并执行入门级别程序 Hello World
2023-01-29
kubernetes 部署SonarQube 7.1 关联LDAP
2023-01-29
Java基础:按位运算符
2023-01-29
Kubernetes 配置管理实战
2023-01-29
Java基础:数字类概念、常用方法、常量
2023-01-29
Kubernetes 针对资源紧缺处理方式的配置
2023-01-29