最大乘积
时间限制:1秒 空间限制:32768K 热度指数:8197
校招时部分企业笔试将禁止编程题跳出页面,为提前适应,练习时请使用在线自测,而非本地IDE。

题目描述

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

输入描述:

无序整数数组A[n]

输出描述:

满足条件的最大乘积
示例1

输入

3 4 1 2

输出

8

思路分析:看到这个题目,下意识想到用Arrays.sort()排一下序,

因为输入的整数可以是负数,所以只需要用Math.max()判断一下,

最大的三个数的乘积 与 最小两个数与最大那个数的乘积 哪个数大,输出哪个就行啦,

例如:5,3,2,-8,-9;5*3*2=30 < 5*(-8)*(-9)=360

but Arrays.sort()的思路是归并排序,时间复杂度是O(n*log(n)),不符合题目要求
所以,额,,,我就用了最最笨的方法哈哈:

我用三个变量存前三大的整数,用两个变量存最小的两个数;

一边接收输入的值,一边判断,时间复杂度为O(n),空间复杂度为O(1);

最后输出 最大的那三个数的乘积大与最小的那两个数与最大的数的乘积中较大的数就ok啦。

Java 代码如下:
import java.util.Scanner;
public class Main{public static void main(String[] args){Scanner sca = new Scanner(System.in);int n = 0;int m = sca.nextInt();int max=Integer.MIN_VALUE,max1=Integer.MIN_VALUE,max2=Integer.MIN_VALUE,min=Integer.MAX_VALUE,min1 = Integer.MAX_VALUE;for(int i = 0;i<m;i++){n = sca.nextInt();if(max>n){max2 = Math.max(Math.min(max1,n),max2);max1 = Math.max(max1,n);}else{max2 = max1;max1 = max;max = n;}if(min<n)min1 = Math.min(min1,n);else{min1 = min;min = n;}}long a = (long)max*max1*max2;long b = (long)max*min*min1;System.out.println(Math.max(a,b));}
}

 

转载于:https://www.cnblogs.com/l199616j/p/10311858.html

2018 拼多多 校招真题 最大乘积相关推荐

  1. 拼多多面试真题:如何用 Redis 统计独立用户访问量!

    作者 | 沙茶敏碎碎念 来源 | http://toutiao.com/i6695734985246114312/ 众所周至,拼多多的待遇也是高的可怕,在挖人方面也是不遗余力,对于一些工作3年的开发, ...

  2. Java算法:牛客网拼多多笔试真题算法Java版1-13题

    题号 题目 知识点 难度 通过率 PDD1 最大乘积 贪心模拟 中等 14.45%PDD2 大整数相乘 模拟 中等 27.32%PDD3 六一儿童节 贪心 中等 24.74%PDD4 迷宫寻路 模拟 ...

  3. 2018 拼多多校招贪心算法题

    题目描述 六一儿童节,老师带了很多好吃的巧克力到幼儿园.每块巧克力j的重量为w[j],对于每个小朋友i,当他分到的巧克力大小达到h[i] (即w[j]>=h[i]),他才会上去表演节目.老师的目 ...

  4. 2018拼多多校招【最大乘积】Python解法

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

  5. 2018拼多多校招笔试贪心编程题小熊吃糖详解

    题目描述 有n只小熊,他们有着各不相同的战斗力.每次他们吃糖时,会按照战斗力来排,战斗力高的小熊拥有优先选择权.前面的小熊吃饱了,后面的小熊才能吃.每只小熊有一个饥饿值,每次进食的时候,小熊们会选择最 ...

  6. 拼多多校招算法题迷宫寻路

    题目描述 假设一个探险家被困在了地底的迷宫之中,要从当前位置开始找到一条通往迷宫出口的路径.迷宫可以用一个二维矩阵组成,有的部分是墙,有的部分是路.迷宫之中有的路上还有门,每扇门都在迷宫的某个地方有与 ...

  7. 拼多多校招编程题--大整数相乘(Java实现)

    题目描述 有两个用字符串表示的非常大的大整数,算出他们的乘积,也是用字符串表示.不能用系统自带的大整数类型. 思路: (1)参考乘法计算,随机取一个乘数1,并从后向前遍历i (2)用另外一个乘数2,并 ...

  8. 2018拼多多校招【大整数相乘】Python解法

    思路 大整数相乘,其实完全套用了列竖式计算乘法的思路,重点就是讲竖式计算这一过程用代码表示.竖式计算中,一个乘数会和另一个乘数逐位相乘,从个位到最高位,相乘的结果依次左移一位,最后将多个计算结果相加即 ...

  9. 拼多多2018年校招真题

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

最新文章

  1. TF-IDF 原理及sklearn中的tf-idf实例分析
  2. 【字符串】最长回文子串 ( 蛮力算法 )
  3. 再探文件输入和输出函数
  4. 生活智慧:奇特的人生法则
  5. 计算机软件基础-(软件开发过程管理)
  6. Google Play
  7. Github之深入解析Ruby Gems缓存
  8. 面试官:为什么 wait() 方法需要写在循环里?
  9. 从缓存行出发理解volatile变量、伪共享False sharing、disruptor
  10. 集算器协助Java处理结构化文本之条件过滤
  11. IS环境下配置PHP5+MySql+PHPMyAdmin
  12. 酒桌上的规矩,社会的潜规则
  13. golang 指针总结(与C/C++区别不大,就是不可以p+1偏移)
  14. Windows 11 将使 AMD 芯片性能下降 15%!
  15. 华工计算机工图答案,华南理工 网络画法几何及工程制图-课程习题集答案
  16. 凯撒密码的超详细讲解
  17. 整合HikariCP
  18. 主题:讲解三层代码讲解--第三课(*****) DATE:2004-05-28
  19. [学习]17 每天只睡6小时,依然精力充沛
  20. 卷积神经网络 - 汇聚层

热门文章

  1. 开始暂停按钮实现图片随机切换并显示在指定图像框内
  2. 计算机网络TCP的全称,tcp/ip全称是什么
  3. 后端 学习 前端 Vue 框架基础知识
  4. 解决过渡动画导致的抖动
  5. 说说如何安装与配置 jBPM4 开发环境
  6. homeassistant core安装方式无HACS插件成功解决(记录)
  7. 【宇麦科技】腾xun云登场,群晖NAS自定义域名教程来啦~
  8. 51单片机入门学习 第七天
  9. 光伏并网发电系统MATLAB Simulink仿真设计 该仿真包括电池,BOOST升压电路,单相全桥逆变电路
  10. 暗影骑士vn7安装linux,宏碁暗影骑士vn7 591g笔记本怎么样?