新闻详情

新闻详情

首页 / 资讯中心 / 详情

LeetCode 628. 三个数的最大乘积

发布时间:2026/9/30 15:33:44来源:尧图网络
LeetCode 628. 三个数的最大乘积
LeetCode 628 题目原文628. 三个数的最大乘积难度简单链接https://leetcode.cn/problems/maximum-product-of-three-numbers/题目描述给你一个整型数组nums在数组中找出由三个数组成的最大乘积并返回这个最大乘积。示例示例1输入nums [1,2,3]输出6示例2输入nums [1,2,3,4]输出24示例3输入nums [-1,-2,-3]输出-6提示3≤nums.length≤1043 \le nums.length \le 10^43≤nums.length≤104−1000≤nums[i]≤1000-1000 \le nums[i] \le 1000−1000≤nums[i]≤1000费曼学习法讲解破解思路假装讲给零基础同学费曼核心用大白话讲清楚找到卡壳的漏洞简化重讲。第一步看懂题目题目数组里随便挑3个不同元素相乘找乘积最大的值。坑点负数两个负数相乘是正数比如数组[-5,-4,1,2,3]最大三个正数1×2×36最小两个负数 × 最大正数(-5)*(-4)*3 60明显更大 所以只有两种候选组合最大乘积一定出自这二者之一排序后最后面最大的3个数相乘三个大数排序后最前面最小2个数很可能是两个负数 × 数组最大的数我们只算出这两个乘积返回两者中更大的那个就全部覆盖所有情况。为什么不用枚举全部三元组数组最多10000个元素枚举全部组合是O(n3)O(n^3)O(n3)超级慢完全不可行。解法1排序法简单好写面试首选思路将数组从小到大排序候选1末尾3个大数nums[-1] * nums[-2] * nums[-3]候选2前2个最小数 × 末尾最大数nums[0] * nums[1] * nums[-1]return max(候选1候选2)时间复杂度O(nlog⁡n)O(n\log n)O(nlogn)排序消耗空间原地排序O(1)O(1)O(1)Python代码每行详细注释# 导入类型注解工具leetcode提交需要ListfromtypingimportList# leetcode固定模板类classSolution:# 定义函数nums是输入数组返回int整数defmaximumProduct(self,nums:List[int])-int:# 第一步数组从小到大排序nums.sort()# 候选方案1数组排序后最后三个最大数字相乘product_max_threenums[-1]*nums[-2]*nums[-3]# 候选方案2数组前两个最小数字(负数) * 数组最大数字nums[-1]product_two_min_one_maxnums[0]*nums[1]*nums[-1]# 返回两个乘积里面较大的值就是答案returnmax(product_max_three,product_two_min_one)测试代码本地运行# 实例化类sSolution()print(s.maximumProduct([1,2,3]))# 6print(s.maximumProduct([1,2,3,4]))# 24print(s.maximumProduct([-1,-2,-3]))# -6print(s.maximumProduct([-5,-4,1,2,3]))# 60解法2一次遍历法最优时间复杂度O(n)大数据场景费曼讲解不想排序只遍历一遍数组记住5个变量最大的3个数 max1max2max3最小2个数 min1min2遍历每一个数字不断更新这5个变量最后同样算两个候选乘积。Python代码每行详细注释fromtypingimportListclassSolution:defmaximumProduct(self,nums:List[int])-int:# 初始化三个最大值负无穷任何数字都比它大max1max2max3float(-inf)# 初始化两个最小值正无穷任何数字都比它小min1min2float(inf)# 循环遍历数组中每一个数字fornuminnums:# 更新三个最大值顺序不能乱先更新最大再依次向后传递ifnummax1:# 当前数字比最大的还大原来的max1变成max2max2变成max3max3,max2,max1max2,max1,numelifnummax2:# 数字介于max1和max2之间更新max2旧max2给max3max3,max2max2,numelifnummax3:# 数字介于max2和max3之间只更新第三大max3num# 更新两个最小值ifnummin1:# 当前数字比最小的还小原来最小的变成第二小min2,min1min1,numelifnummin2:# 数字介于min1和min2之间更新第二小min2num# 候选1最大三个数相乘candidate1max1*max2*max3# 候选2两个最小 × 最大candidate2min1*min2*max1# 返回较大值returnmax(candidate1,candidate2)时间复杂度O(n)O(n)O(n)只遍历数组1次空间复杂度O(1)O(1)O(1)只用5个变量不随数组长度增加。适合海量数据场景数组长度极大的时候优先选这个。费曼查漏容易踩坑的盲区全部负数数组[-5,-4,-3,-2]排序后[-5,-4,-3,-2]候选1(-4)(-3)(-2) -24候选2(-5)(-4)(-2)-40max取-24 ✔包含0的数组[-3,-2,0,1,2](-3)(-2)2 12 0120不要暴力三重循环n10000三重循环亿亿次直接超时。应用场景举例金融风控/收益预测一组资产的涨跌幅有正有负选取3个资产组合求组合收益乘积最大值。负数代表下跌两个大跌资产反转做空大涨资产可以收益最大化。定价、折扣模型商品折扣系数数组折扣可以是负数补贴选3个系数组合计算总放大系数最大值用于营销方案测算。传感器信号处理采集一批传感器数据有正负波动从中选3个信号相乘找最强信号组合。面试算法场景这是面试经典数组题考察对负数乘法的思维不是单纯排序。两种方案对比方案时间复杂度优点缺点适用场景排序法O(n log n)代码简短好写不容易写错大数据排序稍微慢普通数组面试写代码首选单次扫描O(n)最快只扫一遍变量更新逻辑容易写反超大数组、性能敏感场景
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

腾讯云Lighthouse部署Hermes Agent:个人AI智能体搭建与调优指南 2026/9/30 16:33:11

腾讯云Lighthouse部署Hermes Agent:个人AI智能体搭建与调优指南

1. 为什么我最终选了 Hermes Agent 而不是自己从零写一个 先说结论:如果你只是想快速拥有一个能对话、能调用工具、能记住上下文的个人 AI 智能体,Hermes Agent 是目前门槛最低的路径之一。但"门槛低"不等于"没有坑",我在…

阅读更多 →
Hermes模型Agent开发实战:从部署到生产级容错 2026/9/30 16:33:10

Hermes模型Agent开发实战:从部署到生产级容错

智能体开发这件事,最怕的不是模型不够强,而是从 Demo 到生产之间那条看不见的鸿沟。我见过太多团队拿着一个能跑通的 Function Calling 示例就以为万事大吉,结果一上真实流量,工具调用乱序、上下文爆炸、模型输出格式漂移、并发一…

阅读更多 →
从模型选型到智能体落地:Hermes、Function Calling与vLLM生产级Agent工程实战 2026/9/30 16:33:10

从模型选型到智能体落地:Hermes、Function Calling与vLLM生产级Agent工程实战

1. 从模型选型到智能体落地:这套方案到底在解决什么问题 过去大半年,我一直在折腾 Agent 相关的项目,从最开始的玩具级 Demo 到后来真正要扛线上流量的生产系统,中间踩的坑实在太多了。很多朋友问我,Hermes 这套东西到…

阅读更多 →
大模型推理优化实战:从PyTorch到TensorRT/vLLM的全链路调优 2026/9/30 16:33:00

大模型推理优化实战:从PyTorch到TensorRT/vLLM的全链路调优

1. 项目概述:Model-Optimizer 不是工具名,而是一类工程实践的统称 “Model-Optimizer”这个标题乍看像某个开源项目或商业软件的名字,但结合它在NVIDIA生态中高频出现的上下文——TensorRT-LLM、vLLM、TensorRT、PT文件转换、Docker镜像部署…

阅读更多 →
SmartClass 智学在线技术复盘:我用「规则引擎」而非 AI,做出了可解释的学情推题 2026/9/30 16:32:38

SmartClass 智学在线技术复盘:我用「规则引擎」而非 AI,做出了可解释的学情推题

本文作者:李玉涛(Leo),长春师范大学 数据科学与大数据技术专业 2027 届本科生,辅修数学双学位。 项目仓库:Leo-Li638/smartclass(https://github.com/Leo-Li638/smartclass) 个人技术…

阅读更多 →
2026 企业 AI 办公工具选型指南:从评估维度到场景适配 2026/9/30 16:32:37

2026 企业 AI 办公工具选型指南:从评估维度到场景适配

一、企业选AI办公工具,为什么不能只看功能列表 很多企业在启动AI办公工具调研时,第一反应是拉一张长长的功能对比表,把不同产品的能力点逐一打勾,再对比单席位价格,最后选功能覆盖最多、单位成本最低的选项。也有不少管…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉