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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/668.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java中的递归方法:初学者的简明指南

Java中的递归方法&#xff1a;初学者的简明指南 递归是编程中的一个重要概念&#xff0c;它指的是一个方法直接或间接地调用自身。递归方法在处理某些问题时&#xff0c;特别是那些可以分解为更小、更简单的子问题时&#xff0c;非常有用。虽然递归的概念初看起来可能有些复杂…

QEMU_v8搭建OP-TEE运行环境

文章目录 一、依赖下载二、设置网络三、安装下载四、运行OP-TEE 一、依赖下载 更新依赖包&#xff0c;下载一系列依赖。比如Python需要Python3.x版本&#xff0c;需要配置git的用户名和邮箱等。这里不详细展开了&#xff0c;很多博客都有涉及到。 二、设置网络 这一点非常重…

【nginx代理和tengine的启动-重启等命令】

在nginx成功启动后[任务管理器有nginx.exe进程]&#xff0c;运行vue项目&#xff0c;在浏览器访问http://localhost:10001/&#xff0c;提示&#xff1a;访问拒绝&#xff08;调试中network某些地址403&#xff09;&#xff1b; 解决方案&#xff1a; localhost改为ip&#xff…

已解决:用 Pyinstaller 模块将整个GUI项目打包成 单独exe 文件、移到没有python的环境依旧可以运行(全网完美解决的方法)

1.环境 我的项目是pyside2实现的GUI项目,涉及文件读写、panda操作等,项目包括ui文件、ico文件、项目模块(项目中有多个不同的模块、每个模块里面有代码)。项目内容是可以使用该GUI框架对别的数据文件进行读取、加工处理、保存等一系列操作。win11+python3.8+pyside2+其它库…

【Flutter】GetX状态管理及路由管理用法

目录 一、安装二、使用1.安装GetX插件&#xff0c;快捷生成模版代码2.主入口MaterialApp改成GetMaterialApp3.定义路由常量RoutePath类、别名映射页面RoutePages类4. 初始initialRoute&#xff0c;getPages。5.调用 总结 一、安装 dependencies: get: ^4.6.6二、使用 1.安装G…

MDK-ARM Keil5.38 下载安装环境搭建

一、keil软件介绍 KEIL是公司的名称&#xff0c;有时候也指KEIL公司的所有软件开发工具&#xff0c;目前2005年Keil由ARM公司收购&#xff0c;成为ARM的公司之一。 MDK&#xff08;Microcontroller Development Kit&#xff09; 也称MDK-ARM、KEIL MDK、RealView MDK、KEIL For…

[最新]访问/加速StackOverFlow的方法

但是有很多问题都是在StackOverFlow上有现成的解决方案&#xff0c;而某度搜索引擎…前一页的回答互相抄袭&#xff0c;看着实在胀眼睛。 话不多说&#xff0c;解决办法&#xff1a; 直接访问插件商店下载插件&#xff08;最快捷方便&#xff0c;点点就行&#xff09;&#x…

Python中的迭代器:深入理解与实用指南

文章目录 1. 迭代器的基本概念2. Python中的迭代器实例3. 自定义迭代器3.1 例子3.2 详细过程 4. 迭代器的高级应用5. 常见问题与解答 迭代器是Python中非常核心的概念之一&#xff0c;在面试中也会被问到。下面我会详细介绍什么是迭代器&#xff0c;使用方法&#xff0c;以及使…

python_表格处理_pandas_pd.read_csv输入输出参数说明

pd.read_csv 输入参数说明 pd.read_csv() 函数用于从 CSV 文件中读取数据&#xff0c;并返回一个 DataFrame 对象。它的常用输入参数说明如下&#xff1a; filepath_or_buffer&#xff1a;CSV 文件的路径或者文件对象&#xff0c;可以是本地文件路径、URL、文件类对象等。sep&…

怎么转行做产品经理?

小白转产品经理第一点要先学基础理论知识&#xff0c;学了理论再去实践&#xff0c;转行&#xff0c;跳槽&#xff01; 学理论比较好的就是去报NPDP的系统班&#xff0c;考后也会有面试指导课、职场晋升课程&#xff0c;对小白来说非常合适了~&#xff08;B站&#xff1a;不爱…

linux驱动开发中jiffies的使用

Linux 内核使用全局变量 jiffies 来记录系统从启动以来的系统节拍数&#xff0c;系统启动的时候会将 jiffies 初始化为 0&#xff0c;jiffies 定义在文include/linux/jiffies.h 中&#xff0c;定义如下&#xff1a; extern u64 __jiffy_data jiffies_64; // 64位的jiffie…

探索 IntelliJ IDEA 2024.1最新变化:全面升级助力编码效率

探索 IntelliJ IDEA 2024.1最新变化&#xff1a;全面升级助力编码效率 文章目录 探索 IntelliJ IDEA 2024.1最新变化&#xff1a;全面升级助力编码效率摘要引言 IntelliJ IDEA 2024.1 最新变化关键亮点全行代码补全 Ultimate对 Java 22 功能的支持新终端 Beta编辑器中的粘性行 …

mac安装idea、安装Tomcat,idea配置tomcat,mac安装Maven

记录一下mac安装idea、安装Tomcat&#xff0c;idea配置tomcat&#xff0c;mac安装Maven的过程&#xff0c;及遇到的问题&#xff1a; &#xff08;1&#xff09;mac安装idea&#xff1a;idea有两个版本社区版和商业版本&#xff0c;其中社区版免费但是不能安装javaEE插件&…

『FPGA通信接口』串行通信接口-IIC(2)EEPROM读写控制器

文章目录 1.EEPROM简介2.AT24C04简介3.逻辑框架设计4.随机读写时序5.仿真代码与仿真结果分析6.注意事项7.效果8.传送门 1.EEPROM简介 EEPROM (Electrically Erasable Programmable read only memory) 是指带电可擦可编程只读存储器。是一种掉电后数据不丢失的存储芯片。在嵌入…

k8s一些难懂的技术点(1)

一、k8s api server的选举机制 API server&#xff08;API服务器&#xff09;的选举机制是指在这些系统中&#xff0c;如何选择一个或多个API服务器来处理客户端请求的过程。这种选举机制通常用于确保高可用性、负载均衡和故障转移。 以下是API server选举机制的一些关键点&a…

uniapp项目中表单输入完整项之后提交按钮颜色高亮显示并触发点击事件

1.效果图&#xff1a; 2.html <view class"add" :style"{background: dynamicBackgroundColor, border-color: white}" click"handleClick">添加新地址 </view> 3.js formData: {name: ,phoneNumber: ,addressDetail: }//利用com…

【AIGC调研系列】Dify平台是什么

Dify平台是一个专为大型语言模型&#xff08;LLM&#xff09;开发和运营设计的LLMOps&#xff08;Large Language Model Operations&#xff09;平台。它旨在简化AI应用的创建、部署和管理过程&#xff0c;使开发者能够更快速、更轻松地构建和运营基于GPT等模型的AI应用。 Dif…

电大搜题微信公众号:引领海南开放大学远程教育新风尚

随着信息技术的日新月异&#xff0c;远程教育已成为现代教育的重要组成部分。海南开放大学&#xff0c;作为我国广播电视大学系统的一员&#xff0c;始终紧跟时代步伐&#xff0c;不断创新教学方式和服务模式&#xff0c;旨在为广大学生提供更为优质、高效的教育资源。其中&…

JVM 性能调优命令(jps,jinfo,jstat,jstack,jmap)

常用命令&#xff1a;jps、jinfo、jstat、jstack、jmap jps jps查看java进程及相关信息 jps -l 输出jar包路径&#xff0c;类全名 jps -m 输出main参数 jps -v 输出JVM参数jps命令示例 显示本机的Java虚拟机进程&#xff1a; # jps 15729 jar 92153 Jps 90267 Jstat显示主类…

Java中方法值的传递机制详解

Java中方法值的传递机制详解 在Java中&#xff0c;当我们传递参数给方法时&#xff0c;实际上传递的是参数的“值”&#xff0c;而不是参数的“引用”。这意味着&#xff0c;在方法内部对参数所做的任何修改都不会影响到方法外部的原始变量。这种传递机制称为“值传递”。 下…