• 这里要注意的是当数字足够大的时候,我们要使用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;
    }

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

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

    题目描述 给定一个无序数组,包含正数.负数和0,要求从中找出3个数的乘积,使得乘积最大,要求时间复杂度:O(n),空间复杂度:O(1) 输入描述: 无序整数数组A[n] 输出描述: 满足条件的最大乘积 ...

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

    实现该算法主要思想是, 1.两个负数与与一个正数相乘 2.全为最大正数相乘得到最大值 下面用算法实现,时间复杂度为O(n),下面用java实现,不过有一些为0的情况排除下可以,还有一些整形过大可以变为 ...

  3. 2020-06-10:给定一个无序数组,里面数都是成双数的,只有一个数是成单数的,求这个数? 如果上面那题里面有两个单数,怎么求出来?

    1.异或 2.字典或集合 3.排序 golang语言采用异或方式,代码如下: package test22_singlenumber3import ("fmt""test ...

  4. 2020-06-09:给定一个无序数组,里面数都是成双数的,只有一个数是成单数的,求这个数?

    1.异或 2.字典或集合 3.排序 golang语言采用异或方式,代码如下: package test21_singlenumberimport ("fmt""testi ...

  5. Java面试题:1-100之间的数,被放在数组a[99]中,有一个数没有包含在其中,用java代码找出这个数...

    查看复制到剪切板打印 import java.util.Random; /** * 查找缺失的一个数字 * @author 老紫竹 java2000.net * */ public class Tes ...

  6. 有苦有乐的算法 --- 一个无序数组,如果从小到大排好序,任何一个元素任何一个元素移动索引长度不超过k,实现排序

    题目 一个无序数组,如果从小到大排好序,任何一个元素任何一个元素移动索引长度不超过k,实现从小到大排序 例: k=2 排序后,[4]移动2个索引,[6]移动2个索引,[1]移动2个索引,[3]移动2个 ...

  7. 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。

    题目描述 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和. 输入: [-2,1,-3,4,-1,2,1,-5,4] 输出: 6 解释: 连续子数组 ...

  8. 算法思想记录:给定一个整数数组 nums 和一个目标值 target

    1.我的目的 记录此题的思路 ----- 灵活运用hashmap/dict提升效率 2.题目描述 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数, ...

  9. 【算法】【华为】2019华为笔试 找终点:给定一个正整数数组,最大为100个成员,从第一个成员开始,走到数组最后一个成员最少的步骤数,

    ■题目描述 给定一个正整数数组,最大为100个成员,从第一个成员开始,走到数组最后一个成员最少的步骤数, 第一步必须从第一元素开始,1<=步长<len/2, 第二步开始以所在成员的数字走相 ...

最新文章

  1. jfinal怎么连接oracle,如何用Jfinal连接多个数据库
  2. vector基础操作
  3. libudev-dev 错误 libudev1 (= 204-5ubuntu20) 但是 204-5ubuntu20.5 正要被安装 解决方法
  4. vue --- ref属性获取dom元素和子组件的方法
  5. 7.python之正则表达式re模块
  6. 什么情况使用 weak 关键字,相比 assign 有什么不同?
  7. Unicode和Utf-8
  8. 安装教程rtx2080ti_点云深度学习环境配置指南(一)Ubuntu16.04+RTX2080ti
  9. 【洛谷 P2513】 [HAOI2009]逆序对数列(DP)
  10. 【Python】os库的使用
  11. ubuntu永久修改主机名
  12. Python库:jieba库中文分词
  13. border-collapse
  14. ruby连接mysql问题
  15. 设计模式---外观模式(C++实现)
  16. 算法笔记 (胡凡 / 曾磊 著)
  17. 【每周论文阅读-第四周】proposal-level 特征聚合视频目标检测方法01
  18. 腾讯笔试题(含答案)
  19. 用python代码实现一个简单的FSA(有限状态自动机)
  20. VM虚拟机安装CentOS7系统后连接不上网络的问题(service netword restart)重启网卡和重置网络编译器

热门文章

  1. 英语----状语从句连接词(下)
  2. Flink批处理中的增量迭代
  3. VSCode设置中文(如果遇到不能下载或者安装失败)
  4. 三星s5830i ROOT
  5. 揭开意识的奥秘:兼谈认知相对论纲领
  6. WEB开发的一些基本原则
  7. 硬盘和计算机的接口类型有哪两种,常见的不同类型接口的固态硬盘有哪些
  8. 【原创】Python 二手车之家
  9. 【云周刊】第134期:阿里云发布ECS企业级产品家族 19款实例族涵盖173个应用场景...
  10. jquery.PrintArea.js 打印