题目描述

给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积。

示例

示例 1:
输入: [1,2,3]
输出: 6

示例 2:
输入: [1,2,3,4]
输出: 24

注意:
给定的整型数组长度范围是[3,104],数组中所有的元素范围是[-1000, 1000]。
输入的数组中任意三个数的乘积不会超出32位有符号整数的范围。

源代码

思路:考虑四种情况即可:
先排序找到最大的三个数,这三个数:
1.全部小于零
2.有一个大于零
3.有两个大于零
4.全部大于零

class Solution {public:int maximumProduct(vector<int>& nums) {int n=nums.size();sort(nums.begin(),nums.end());int ans;if(nums[n-1]<=0&&nums[n-2]<=0&&nums[n-3]<=0) ans=nums[n-1]*nums[n-2]*nums[n-3];if(nums[n-1]>=0&&nums[n-2]<=0&&nums[n-3]<=0) ans=nums[n-1]*nums[0]*nums[1];if(nums[n-1]>=0&&nums[n-2]>=0&&nums[n-3]<=0) ans=nums[n-1]*nums[0]*nums[1];if(nums[n-1]>=0&&nums[n-2]>=0&&nums[n-3]>=0) ans=max(nums[n-1]*nums[n-2]*nums[n-3],nums[n-1]*nums[0]*nums[1]);return ans;}
};

复杂度分析:

  • 时间复杂度:O(NlogN),其中 N为数组长度。排序需要O(NlogN) 的时间。

  • 空间复杂度:O(logN),主要为排序的空间开销。

力扣-628 三个数的最大乘积相关推荐

  1. 力扣628. 三个数的最大乘积

    题目描述 给你一个整型数组 nums ,在数组中找出由三个数组成的最大乘积,并输出这个乘积. 示例 示例 1:输入:nums = [1,2,3] 输出:6示例 2:输入:nums = [1,2,3,4 ...

  2. leetcode 628. Maximum Product of Three Numbers | 628. 三个数的最大乘积(Java)

    题目 https://leetcode-cn.com/problems/maximum-product-of-three-numbers/ 题解 找到三个数的最大乘积.先给数组排序,考虑可能有负数的情 ...

  3. LeetCode 628. 三个数的最大乘积

    1. 题目 给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积. 示例 1: 输入: [1,2,3] 输出: 6示例 2: 输入: [1,2,3,4] 输出: 24注意: 给定的整型 ...

  4. leetcode(3)——414. 第三大的数(C++中的 set,::作用符号,迭代器),628 三个数的最大乘积(sort函数的用法)

    文章目录 前言 414 程序 疑惑 set ::在c++中什么意思 一.作用域符号: 二.全局作用域符号: 三.作用域分解运算符: C++ 迭代器 628 程序 疑惑 sort函数 前言 大佬的程序, ...

  5. leetcode 628. 三个数的最大乘积(排序)

    给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积. 示例 1: 输入: [1,2,3] 输出: 6 解题思路 最大的乘积可能有两种情况 1.两个最小负数和一个最大正数 2.三个最大 ...

  6. 623.三个数的最大乘积

    623.三个数的最大乘积 题目 给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积. 示例 1: 输入: [1,2,3] 输出: 6 示例 2: 输入: [1,2,3,4] 输出: ...

  7. 整型数组中三个数的最大乘积

    题目:给定一个整形数组,在数组中找出由三个数组成的最大乘积. 示例1: 输入:{1,2,3} 输出: 6 示例2:{1,2,3,4} 输出: 24 ** 思路:先给数组排序,最大的数分为两种情况,一种 ...

  8. 牛客题霸 [三个数的最大乘积]C++题解/答案

    牛客题霸 [三个数的最大乘积]C++题解/答案 题目描述 给定一个无序数组,包含正数.负数和0,要求从中找出3个数的乘积,使得乘积最大,要求时间复杂度:O(n),空间复杂度:O(1). 题解: 有人说 ...

  9. 力扣第三题java_LeetCode 题解 | 力扣杯 LCP 06. 拿硬币

    力扣杯 LCP 06. 拿硬币(点击查看题目) 力扣​leetcode-cn.com 题目描述 桌上有 n 堆力扣币,每堆的数量保存在数组 coins 中.我们每次可以选择任意一堆,拿走其中的一枚或者 ...

  10. leetcode628. 三个数的最大乘积(简单,我觉得你不会)

    给你一个整型数组 nums ,在数组中找出由三个数组成的最大乘积,并输出这个乘积. 示例 1: 输入:nums = [1,2,3] 输出:6 示例 2: 输入:nums = [1,2,3,4] 输出: ...

最新文章

  1. VirtualBox上装CentOS5.8网络不通问题
  2. 将一列数据转换成一个字段数据,逗号分隔
  3. gin-vue-blog自建博客
  4. 使用HIBERNATE的SQL查询并将结果集自动转换成POJO
  5. Android和iOS智能机去年出货超7亿 同比增长46%
  6. geforce experience_Nvidia? Geforce? Experience?是什么?如何使用呢?
  7. Jquery遮罩插件,想罩哪就罩哪!
  8. 如何购买微软的wince 等授权组件等?(找到了!)
  9. Unity3D学习笔记
  10. 2021年微信小程序点餐系统功能模板搭建
  11. 推到 旋转矩阵公式_想知道旋转矩阵的带入公式
  12. logback教程logback快速入门超实用详细教程收藏这一篇就够了(万字长文)
  13. QT Creator 5.1.2中英文切换
  14. 使用 mongorestore恢复数据以及使用 Studio 3T GUI 管理数据库
  15. php--spry框架读取显示xml数据
  16. YLAN_TRANSLATE ABAP程序批量翻译工具
  17. 云计算中paas,laas,saas的区别
  18. 湖北职称英语和职称计算机考试,湖北职称英语考试
  19. Java爬虫系列(五) - 爬虫补充内容+ElasticSearch展示数据
  20. 【Wikipedia爬虫工具包的使用】请求超时、代理错误、SSLError

热门文章

  1. .NET基础拾遗(6)ADO.NET与数据库开发基础
  2. CentOS 7 重装mysql编译过程报错解决方法
  3. listView中的button控件获取索引
  4. 操作~拷贝clone()
  5. js获取窗口宽度高度
  6. 快速从小白到大牛的Python学习路线
  7. 【论文解读】基于边界感知神经网络进行嵌套命名实体识别
  8. 【干货】400+页的《面向机器学习的数学》pdf
  9. 一道头条面试题,小夕差点没读懂题目,找出数组中缺失的数字,最近击败100%的用户!...
  10. 每日算法系列【LeetCode 128】最长连续序列