当前位置: 首页 > news >正文

leetcode 628. 三个数的最大乘积

  • 题目描述
  • 解题思路
  • 执行结果
leetcode 628. 三个数的最大乘积


题目描述

  1. 三个数的最大乘积

给你一个整型数组 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

解题思路

法1

排序+模拟\

  1. 对数组进行排序
  2. 找出乘积最大的三个数
  • a[0]*a[1]*a[len-1]
  • a[len-1]*a[len-2]*a[len-3]

这两种情况下可以取到最大值

  • 时间复杂度(O(nlogn))
  • 空间复杂度(O(1))

执行结果

法1

func maximumProduct(nums []int) int {
 l := len(nums)
 if l <= 3 {
  return nums[1] * nums[2] * nums[0]
 }
 sort.Ints(nums)
 if nums[0] > 0 && nums[l-1] < 0 || nums[0]*nums[1]*nums[l-1] < nums[l-1]*nums[l-2]*nums[l-3] {
  return nums[l-1] * nums[l-2] * nums[l-3]
 }
 return nums[0] * nums[1] * nums[l-1]
}

执行结果: 通过 显示详情 查看示例代码 添加备注

执行用时: 48 ms , 在所有 Go 提交中击败了 66.67% 的用户 内存消耗: 6.3 MB , 在所有 Go 提交中击败了 72.73% 的用户 通过测试用例: 92 / 92 炫耀一下:

优化结构

func maximumProduct(nums []int) int {
 l := len(nums)
 sort.Ints(nums)
 if nums[0]*nums[1]*nums[l-1] < nums[l-1]*nums[l-2]*nums[l-3] {
  return nums[l-1] * nums[l-2] * nums[l-3]
 }
 return nums[0] * nums[1] * nums[l-1]
}

执行结果: 通过 显示详情 查看示例代码 添加备注

执行用时: 44 ms , 在所有 Go 提交中击败了 73.33% 的用户 内存消耗: 6.3 MB , 在所有 Go 提交中击败了 72.73% 的用户 通过测试用例: 92 / 92 炫耀一下:

本文由 mdnice 多平台发布

http://www.lryc.cn/news/62400.html

相关文章:

  • fork函数如何创建进程,exit/_exit函数如何使进程终止的详细分析与代码实现
  • 重置电脑时提示“缺少所需的驱动器分区”怎么办?
  • 在KylinV10安装Dm8
  • 「SQL面试题库」 No_46 交换工资
  • SLAM论文速递【SLAM—— RDS-SLAM:基于语义分割方法的实时动态SLAM—4.24(1)
  • OJ练习第82题——填充书架
  • OHOS IDE和SDK的安装方法
  • New Year Garland(计数类DP)
  • 32岁阿里P7,把简历改成不知名小公司,学历改成普通本科,工作内容不变,投简历全挂!...
  • 从三室心脏MRI影像检测主动脉瓣病变
  • 【JavaWeb】JavaScript
  • Apache Doris 1.2.4 Release 版本正式发布|版本通告
  • 【C++STL】map
  • vue2项目PC端如何适配不同分辨率屏幕
  • CorelDRAW2023最新版本图像设计软件
  • 第64章 树型结构数据的前端渲染渲染显示示例
  • 超级国际象棋:第二个里程碑已完成
  • vue3 HTML 和静态资源
  • 5G基站外市电改造建设方案 (ppt可编辑)
  • C++ 类和对象(上)
  • 【BIM+GIS】BIM模型导入GIS软件之前的一些处理设置
  • js FileReader的常用使用方法
  • 网络威胁情报:数据的力量
  • shell:清理指定目录中指定天数之前的旧文件
  • 想入门网络安全?先来看看网络安全行业人才需求!
  • 0424 spring AOP学习
  • GB/T 28181-2022 新版差异笔记
  • 以轻量级服务器niginx为核心的JavaWeb项目:第一章 项目设计
  • 【error】 Request method ‘GET‘ not supported app端调用后台接口报错,后台人员自己调用时没问题
  • Microsoft Bitlocker企业级管理部署方案