LeetCode 628. 三个数的最大乘积 java版

2024-04-16 21:44

本文主要是介绍LeetCode 628. 三个数的最大乘积 java版,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 官网:

. - 力扣(LeetCode)

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 方法 比这道题nbArrays.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. 排序算法: 冒泡,快排,堆排序,插入,希尔排序,桶?哪个是稳定排序?,还记得思路以及实现代码吗?

这篇关于LeetCode 628. 三个数的最大乘积 java版的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/909976

相关文章

Spring核心思想之浅谈IoC容器与依赖倒置(DI)

《Spring核心思想之浅谈IoC容器与依赖倒置(DI)》文章介绍了Spring的IoC和DI机制,以及MyBatis的动态代理,通过注解和反射,Spring能够自动管理对象的创建和依赖注入,而MyB... 目录一、控制反转 IoC二、依赖倒置 DI1. 详细概念2. Spring 中 DI 的实现原理三、

SpringBoot 整合 Grizzly的过程

《SpringBoot整合Grizzly的过程》Grizzly是一个高性能的、异步的、非阻塞的HTTP服务器框架,它可以与SpringBoot一起提供比传统的Tomcat或Jet... 目录为什么选择 Grizzly?Spring Boot + Grizzly 整合的优势添加依赖自定义 Grizzly 作为

Java后端接口中提取请求头中的Cookie和Token的方法

《Java后端接口中提取请求头中的Cookie和Token的方法》在现代Web开发中,HTTP请求头(Header)是客户端与服务器之间传递信息的重要方式之一,本文将详细介绍如何在Java后端(以Sp... 目录引言1. 背景1.1 什么是 HTTP 请求头?1.2 为什么需要提取请求头?2. 使用 Spr

Java如何通过反射机制获取数据类对象的属性及方法

《Java如何通过反射机制获取数据类对象的属性及方法》文章介绍了如何使用Java反射机制获取类对象的所有属性及其对应的get、set方法,以及如何通过反射机制实现类对象的实例化,感兴趣的朋友跟随小编一... 目录一、通过反射机制获取类对象的所有属性以及相应的get、set方法1.遍历类对象的所有属性2.获取

Java中的Opencv简介与开发环境部署方法

《Java中的Opencv简介与开发环境部署方法》OpenCV是一个开源的计算机视觉和图像处理库,提供了丰富的图像处理算法和工具,它支持多种图像处理和计算机视觉算法,可以用于物体识别与跟踪、图像分割与... 目录1.Opencv简介Opencv的应用2.Java使用OpenCV进行图像操作opencv安装j

java Stream操作转换方法

《javaStream操作转换方法》文章总结了Java8中流(Stream)API的多种常用方法,包括创建流、过滤、遍历、分组、排序、去重、查找、匹配、转换、归约、打印日志、最大最小值、统计、连接、... 目录流创建1、list 转 map2、filter()过滤3、foreach遍历4、groupingB

SpringBoot如何使用TraceId日志链路追踪

《SpringBoot如何使用TraceId日志链路追踪》文章介绍了如何使用TraceId进行日志链路追踪,通过在日志中添加TraceId关键字,可以将同一次业务调用链上的日志串起来,本文通过实例代码... 目录项目场景:实现步骤1、pom.XML 依赖2、整合logback,打印日志,logback-sp

Java操作PDF文件实现签订电子合同详细教程

《Java操作PDF文件实现签订电子合同详细教程》:本文主要介绍如何在PDF中加入电子签章与电子签名的过程,包括编写Word文件、生成PDF、为PDF格式做表单、为表单赋值、生成文档以及上传到OB... 目录前言:先看效果:1.编写word文件1.2然后生成PDF格式进行保存1.3我这里是将文件保存到本地后

用Java打造简易计算器的实现步骤

《用Java打造简易计算器的实现步骤》:本文主要介绍如何设计和实现一个简单的Java命令行计算器程序,该程序能够执行基本的数学运算(加、减、乘、除),文中通过代码介绍的非常详细,需要的朋友可以参考... 目录目标:一、项目概述与功能规划二、代码实现步骤三、测试与优化四、总结与收获总结目标:简单计算器,设计

SpringBoot项目启动后自动加载系统配置的多种实现方式

《SpringBoot项目启动后自动加载系统配置的多种实现方式》:本文主要介绍SpringBoot项目启动后自动加载系统配置的多种实现方式,并通过代码示例讲解的非常详细,对大家的学习或工作有一定的... 目录1. 使用 CommandLineRunner实现方式:2. 使用 ApplicationRunne