基础算法:给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大,要求时间复杂度:O(n),空间复杂度:O(1)

求解最大乘积问题 C++实现 给定一个无序数组,包含正数、负数和0,要求从中找到3个数的乘积,使得乘积最大,并且时间复杂度为O(n),空间复杂度为O(1)。 阅读详情
  • 这里要注意的是当数字足够大的时候,我们要使用long long形式的类型,用来记录那个最大值
  • 最大值共有四种情况:
    • 三个正数:数字本身越大则乘积越大
    • 两个负数一个正数:负负得正,所以两个负数最小,之积最大
    • 两个正数一个负数:
      • 这种情况,如果只有【正,正,负】【正,正,负,负】【正,正,负,负,负】【正,正,正,负,负】
      • 所有的情况都包含在第一种和第二种情况里,所以这种情况可以去掉。
    • 三个负数:
      • ​​​​​​​这种情况只有【负,负,负】这一种情况,这种情况和第一种相重合,所以也可以去掉
  • ​​​​​​​所以这里需要求五个数,三个最大,和两个最小,之后将上述的两种情况相比较,那个大就是那个
  • #include<stdio.h>
    #define N 10000
    int main(void){
    	int A[N]={0};
    	//输入数组个数;
    	int n;
    	scanf("%d",&n);
    	//输入数组
    	for(int k=0;k<n;k++){
    		scanf("%d",&A[k]);
    	}
    
    	int m1=0,m2=0,m3=0,x1=0,x2=0;
    
    	//找到最大的三位数以及最小的两位数
    	for(int i=0;i<n;i++){
    		if(A[i]>0){
    			if(A[i]>m1){
    				m3=m2;
    				m2=m1;
    				m1=A[i];
    			}else if(A[i]>m2){
    				m3=m2;
    				m2=A[i];
    			}else if(A[i]>m1){
    				m3=A[i];
    			}
    		}else{
    			if(A[i]<x1){
    				x2=x1;
    				x1=A[i];
    			}else if(A[i]<x2){
    				x2=A[i];
    			}
    		}
    	}
        long temp=m1*m2;
    	long long max=temp*m3;
    	temp = x1*x2;
    	long long max1=m1*temp;
    	if(max1>max)
    		max=max1;
    	printf("%lld",max);
    	return 0;
    }

     

刷题第三天——Lintcode304.最大乘积&187.加油站 三天没写题了,这两个是女神节写的。 304.最大乘积 题目描述:给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大。题目链接 point是 nums.size<=500000 -10000 <= nums[i] <= 10000−10000<=nums[i]<=10000 题目分析: 每次感觉自己想的十分复杂,其实十分easy。 (1)给数组从小到大排序 (2)找到正数三个最大的相乘,或者两个最小的数和最大的相乘。 publi... 阅读详情

相关推荐

三个数乘积

给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大,要求时间复杂度:O(n),空间复杂度:O(1)

小白之歌 876

给出一个整数数组,有正有负有零,要求找出三个数,使其乘积最大

求三个数使乘积最大 给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大,要求时间复杂度:O(n),空间复杂度:O(1) //1.全都是正数,MAX1*MAX2*MAX3(最大的三个数相乘) //2.全都是负数,MAX1*MAX2*MAX3(最大的三个数相乘) //3.有正有负(1)最大应该是正数,因为有正有负的话,三个数相乘总能得到正数 // 只可能这样...

yyg15的博客 1415

三个数的最大积(贪心法)

三个数的最大积(贪心法)

假技术Po主 456

【牛客】最大乘积

题目描述 给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大,要求时间复杂度:O(n),空间复杂度:O(1) 输入描述: 无序整数数组A[n] 输出描述: 满足条件的最大乘积 示例 输入 3 4 1 2 输出 24 Python解法 这道题用 Python可以直接使用内置乘法做出来,但我们这里不使用这种开挂的做法。 经常刷题的童鞋应该看到这个题目很容易想到n个数的...

Kanny 644

redhawk-sc使用简介

数据完整性对结果的准确性有很大影响,所以一定要保证数据完整性,Redhawk-sc在跑完后,Report里有Data Integrity界面,在这个界面会看到设计数据和库文件的数据完整性,在相应的报告中会有没有覆盖到的数据情况,要对每一项仔细检查,保证输入数据没有问题。文件一般加密,用户唯一需要选择的是文件的corner。其中,cell lef除了常规的standard cell,还有如DTCD,BTSV和clamp等cell的lef,不可缺失,否则data integrity将不是100%。

weixin_48518726的博客 3134

实验六 有源滤波器

实验六 有源滤波器一、实验目的二、仪器及设备三、预习要求画出三个电路的幅频特性曲线。四、实验内容l.低通滤波电路2.高通滤波电路3.带阻滤波电路(1)实测电路中心频率。(2)以实测中心频率为中心,测出电路幅频特性。五、实验报告六,仿真图:图 1 低通滤波器仿真图图 2 高通滤波器仿真图图 3 带阻滤波电路仿真图 一、实验目的 1.熟悉有源滤波电路构成及其特性。 2.学会测量有源滤波电路幅频特性。 二、仪器及设备 1.示波器 2.信号发生器 三、预习要求 1.预习教材有关滤波电路

胡毛毛的博客 1万+

牛客网:给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大,要求时间复杂度:O(n),空间复杂度:O(1)

题目描述 给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大,要求时间复杂度:O(n),空间复杂度:O(1) 输入描述: 无序整数数组A[n] 输出描述: 满足条件的最大乘积 示例1 输入 3 4 1 2 输出 24 代码: #!D:/workplace/python # -*- coding: utf-8 -*- # @File : ...

懒骨头707 2290

告别环境配置焦虑:在Win10的Ubuntu子系统里搞定CSAPP实验环境(附32/64位库编译指南)

本文详细介绍了如何在Win10的Ubuntu子系统中搭建CSAPP实验环境,包括WSL 2的安装与配置、32/64位库的编译指南以及高效开发工具链的设置。通过优化WSL性能和使用实用技巧,开发者可以轻松应对CSAPP实验中的环境配置问题,提升学习效率。

weixin_30443813的博客 296

给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大

题目描述 给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大,要求时间复杂度:O(n),空间复杂度:O(1) 输入描述 无序整数数组A[n] 输出描述 满足条件的最大乘积 示例1: 示例1 输入 3 4 1 2 输出 24 源代码 #include<vector> #include<iostream> #include <algorit...

qq_29462849的博客 2672

2.1 跟网型控制原理与局限性

本文深入分析了并网变流器的跟网型(GFL)控制技术及其局限性。GFL控制将变流器视为受控电流源,依赖锁相环(PLL)跟踪电网电压,在强电网下表现良好,但在弱电网中面临严峻挑战。研究发现,当电网短路比降低时,PLL动态与电网阻抗的负交互会导致系统失稳,同时GFL变流器缺乏电压支撑能力和惯量响应能力,在故障时易脱网。相比之下,构网型(GFM)控制具有电压源特性,能自主构建电网电压,更适合弱电网环境。随着新能源占比提高,GFL控制正逐渐被更具主动支撑能力的GFM控制所替代。

技术工作者 994

飞牛fnNAS虚拟机标准安装

飞牛NAS是一款基于Debian开发的国产免费NAS系统,支持x86架构设备,可将闲置硬件改造为NAS服务器。系统安装简便,支持多种存储模式与硬盘休眠功能,具备智能影视管理、照片备份等实用功能,并提供多种远程访问方式。飞牛NAS还支持Docker扩展,目前已承诺永久免费。文章详细介绍了在VMware虚拟机中安装飞牛NAS的步骤,包括下载镜像、创建虚拟机、初始化设置等过程,并展示了创建共享文件夹等基本操作,帮助用户快速上手这款功能强大的免费NAS系统。

dgnankai的专栏 3254

java笔试题-给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大

package com.zjp.offer.study; import java.io.IOException; import java.util.Scanner; /** * 给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大. * 要求时间复杂度:O(n),空间复杂度:O(1) */ public class MaxProduct { public...

pengge_zjp的博客 2722

基于DRU-HVDC的构网型海上风电场环流机理仿真复现

本文介绍了基于DRU-HVDC的构网型海上风电场环流机理仿真模型的构建方法。主要内容包括: 完整的Simulink模型结构,包含主模型文件GFM_DRU_Main.slx和配置脚本GFM_DRU_Setup.m 系统参数设置,包括基础频率(20Hz)、电压基准值(690V)、功率基准值(2MVA)等 四种仿真场景配置:电压不平衡、相位不平衡、阻抗不平衡和频率不平衡 风力发电机(WT)子系统的详细构建步骤,包含电压源、输出阻抗和测量模块 变压器和DRU整流器的参数设置 该模型可用于研究构网型风电场的环流机理。

huanghm88的专栏 261

从数组中找出乘积最大的三个数

题目: 给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大,要求时间复杂度:O(n),空间复杂度:O(1)  输入描述: 无序整数数组A[n] 输出描述: 满足条件的最大乘积 输入例子1: 3 4 1 2 输出例子1: 24 思路: 由于空间复杂度和时间复杂度的要求,肯定无法先排序,因为排序最好时为O(n).整数的值任意需要分

百尺竿头,更进一步 9022

Wsl/InstallDistro/Service/RegisterDistro/CreateVm/HCS/E_INVALIDARG

摘要:安装WSL2时遇到E_INVALIDARG错误(多核CPU问题),可通过创建.wslconfig配置文件解决。配置内容包括:渐进式内存回收、自动代理、模拟虚拟系统调用、限制内存为4GB和处理器核心数为4。需确保已启用虚拟机平台和Linux子系统功能。 (98字)

猿小白的博客 1041

如何用IDEA查看jar包中代码

我们在使用Java进行开放时经常会需要下载些第三方的jar包进行相应的开发。有时候相关jar包的使用文档不足,满足不了我们的特定开发使用要求,这就需要我们查看jar包内的相关代码逻辑,本文将基于IDEA工具介绍如何查看相关jar包的代码逻辑

mystonelxj的博客 2280

O(n)求三个数乘积的最大值

题目描述 给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大,要求时间复杂度:O(n),空间复杂度:O(1) 输入描述: 输入共2行,第一行包括一个整数n,表示数组长度 第二行为n个以空格隔开的整数,分别为A1,A2, … ,An 输出描述: 满足条件的最大乘积 示例1 输入 复制 4 3 4 1 2 输出 复制 24 //--无序数组...

qq_35747066的博客 1646

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大,要求时间复杂度:O(n),空间复杂度:O(1) 输入描述: 输入共2行,第一行包括一个整数n,表示数组长度 第二行为n

给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大,要求时间复杂度:O(n),空间复杂度:O(1) 输入描述: 输入共2行,第一行包括一个整数n,表示数组长度 第二行为n个以空格隔开的整数,分别为A1,A2, … ,An 输出描述: 满足条件的最大乘积 示例1 输入 复制 4 3 4 1 2 输出 复制 24 最暴力的方法,通过率55%,超...

沙粒橙 1066

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

无序数组最大乘积求解

题目: 给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大,要求时间复杂度:O(n),空间复杂度:O(1) 思路如下: 先对数组进行排序 如果全为负数或全为正数,取最后三个数相乘既为最大乘积。关键是既有正数又有负数的情况(0其实可以看作负数)。如果...

chuiyuan9786的博客 770

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

LeetCode题练习与总结:三个数的最大乘积--628

本文详细介绍了如何在整型数组中找出由三个数组成的最大乘积,包括解题思路、具体代码实现、时间复杂度与空间复杂度分析以及涉及的知识点,为解决此类问题提供了清晰的指导。

一直学习永不止步 1028

长度为n的整形数组,找出其中的任意n-1个数乘积最大的那一组

问题描述:长度为n的整形数组,找出其中的任意n-1个数乘机最大的那一组,可以用乘法,但不能用除法,要求对算法处理的 时间复杂度和空间复杂度做出分析。 方法一: 首先能想到的一般方法就是暴力求解法。假设去掉第一个元素,求剩下n-1个乘积赋值给max,同时记录下下标index;然后假设第二个元素去掉,求剩下n-1个的乘积,若比前一个大则max等于当前值,index更新。重复此过程一直

hxwab的博客 3290

最大乘积

来源: 牛客网2018校招真题 题目描述: 给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大,要求时间复杂度:O(n),空间复杂度:O(1)  输入描述: 无序整数数组A[n] 输出描述: 满足条件的最大乘积 示例: 输入 4 3 4 1 2 输出 24 思路: 这道题包含三种情况,要找的这三个数全是正数,全是负数,有正有负,全是正...

while false 2778

寻找乘积最大的三个数

寻找乘积最大的三个数 题设要求:给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大,要求时间复杂度:O(n),空间复杂度:O(1) 输入描述:无序整数数组A[n] 输出描述:满足条件的最大乘积 输入例子1:3 4 1 2 输出例子1:24 问题分析:在数组中存在负数、正数、0的情况下,要获得三个数乘积最大,必然是最大的三个正数或者两个最小的负数和一个最大的正数。也就是说,...

冰美式的博客 1630

拼多多笔试题一:给出一个无序整数数组,求任意三个数的最大乘积

题目: 给出一个可能包含正数、零、负数的无序整数序列,从该序列中任选三个数计算乘积,求最大的乘积是多少? 要求:算法的时间复杂度为O(n),空间复杂度为O(1). 输入: 第一行输入n表示序列中整数的个数 第二行输入n个整数 输出; 最大的乘积 例如: 输入: 4 1 0 -2 -4 输出: 8 import java.time.temporal.ValueRa

YYC的专栏 5533
上一篇: TCP和UDP的区别和优缺点
下一篇: Java基础:JVM、JVM调优
Future_LL
博客等级 码龄9年 215粉丝 255原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值