首页 > 试题广场 >

三个数的最大乘积

[编程题]三个数的最大乘积
  • 热度指数:27321 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定一个长度为 的无序数组 ,包含正数、负数和 0 ,请从中找出 3 个数,使得乘积最大,返回这个乘积。

要求时间复杂度: ,空间复杂度:

数据范围:


示例1

输入

[3,4,1,2]

输出

24
头像 小洋芋热爱NLP
发表于 2021-02-25 10:42:24
- 1、题目描述: - 2、题目链接: https://www.nowcoder.com/practice/8ae05c2913fe438b8b14f3968f64fc0b?tpId=117&tqId=37830&rp=1&ru=%2Factivity%2Foj&q 展开全文
头像 夏臻臻
发表于 2020-08-20 14:21:43
这题就是讨论三种情况吧,首先排序这没什么说的。 第一种:最大的三个都是正数,取后三个相乘即可; 第二种:绝对值最大的三个数中有两个负数,取前两个负数及最后一个正数即可;我看讨论里那个老哥应该是多了一个A[0]A[1]A[2],上面两种情况应该就够了,绝对值最大的三个数中有一个负数或者三个负数都可以覆 展开全文
头像 Maokt
发表于 2021-07-23 17:55:34
算法思想一:排序 解题思路: 首先将数组排序1、如果数组中全是非负数,则排序后最大的三个数相乘即为最大乘积;如果全是非正数,则最大的三个数相乘同样也为最大乘积。2、如果数组中有正数有负数,则最大乘积既可能是三个最大正数的乘积,也可能是两个最小负数(即绝对值最大)与最大正数的乘积。3、综上,在给数组排 展开全文
头像 408真的不难
发表于 2021-08-03 00:50:23
最大的数就两种情况,两个负数一个正数和三个正数我们先对数组进行排序,然后就上面两个情况的数的大小,因为数组是升序的,从小到大,最大的两个负数乘积就在数组的最前面,最大的三个正数就在数组的最后面,比较两个数即可。如果没有负数或者正数,就比较是比较排序后数组的前后端三个数的乘积。一、没有正数,当然负数越 展开全文
头像 摸鱼学大师
发表于 2021-12-08 20:12:11
题目的主要信息: 给定一个长度为 n 的无序数组 A ,包含正数、负数和 0 找出 3 个数,使得乘积最大,返回这个乘积 方法一:排序法 具体做法: 如果数组全是正数,则数组最大的三个数相乘乘积最大; 如果数组全是负数,则数组最大的三个数相乘乘积最大; 如果数组只有1个正数,其余都是负数,则数 展开全文
头像 我和我
发表于 2021-11-13 21:51:11
public class Solution { /** * 最大乘积 * @param A int整型一维数组 * @return long长整型 */ public long solve (int[] A) { // wri 展开全文
头像 dnrops
发表于 2021-11-12 11:52:05
struct Solution{ } impl Solution { fn new() -> Self { Solution{} } /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * 最大乘积 展开全文
头像 绿茵程序员
发表于 2021-09-24 03:51:34
import java.util.*; public class Solution { /** * 最大乘积 * @param A int整型一维数组 * @return long长整型 */ public long solve (int 展开全文
头像 一起看雷阵雨了
发表于 2021-09-25 00:01:36
/** * 最大乘积 * @param A int整型一维数组 * @param ALen int A数组长度 * @return long长整型 */ long long solve(int* A, int ALen ) { // write code here lon 展开全文
头像 ivansli
发表于 2021-05-06 16:01:20
package main import "math" /** * 最大乘积 * @param A int整型一维数组 * @return long长整型 */ func solve( A []int ) int64 { // write code here if len(A 展开全文

问题信息

上传者:牛客332641号
难度:
84条回答 5423浏览

热门推荐

通过挑战的用户

查看代码
三个数的最大乘积