关闭

【机试题】3个数的最大乘积--拼多多2018校招内推编程题

标签: 编程题
491人阅读 评论(0) 收藏 举报

[编程题] 最大乘积
时间限制:1秒
空间限制:32768K
给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大,要求时间复杂度:O(n),空间复杂度:O(1)
输入描述:
无序整数数组A[n]

输出描述:
满足条件的最大乘积

输入例子1:
4
3 4 1 2

输出例子1:
24

//思路是在输入过程中保存【最大的三个数】&【最小的二个数】
//判断下一个数是否进入最大前3位,只需判断它是否>3个数的最小值,如果成立,则替换掉这个最小值;最小前2位同理
//考虑到溢出问题,这里用long long
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
    int tmp;
    vector<long long> max;
    vector<long long> min;
    int n;
    cin >> n;
    while (n--) {
        cin >> tmp;
        sort(max.begin(), max.end(), greater<long long>());
        sort(min.begin(), min.end());
        if (max.size() < 3) max.push_back(tmp);
        else if (tmp > max[2]) max[2] = tmp;
        if (min.size() < 2) min.push_back(tmp);
        else if (tmp < min[1]) min[1] = tmp;
    }
    sort(max.begin(), max.end(), greater<int>());
    sort(min.begin(), min.end());
    long long a = max[0] * max[1] * max[2];
    long long b = min[0] * min[1] * max[0];
    cout << (a > b ? a : b) << endl;

    return 0;
}
0
0
查看评论

【真题】拼多多2018校招内推编程题 最大乘积

题目给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大,要求时间复杂度:O(n),空间复杂度:O(1) 输入描述:无序整数数组A[n]输出描述:满足条件的最大乘积 示例1 输入3 4 1 2 输出24思路逻辑分析类的题目。 解一定是最小的两个数与最大的数三者的乘...
  • liyazhou0215
  • liyazhou0215
  • 2017-08-11 16:23
  • 948

笔试题 找到数组中,三个数乘积最大的结果

思路:先找到三个最大的数,求出乘积max1。再找两个最小的数,想乘后再乘以最大的数,得到乘积max2. 最终返回max1 max2的较大者  public static int maxThree(int[] arr){ //a[0]不用 int[] a=new int[4]; ...
  • tiantainkaixing
  • tiantainkaixing
  • 2017-08-06 12:29
  • 964

拼多多2018校招编程题

[编程题] 最大乘积 给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大,要求时间复杂度:O(n),空间复杂度:O(1)  输入描述: 无序整数数组A[n] 输出描述: 满足条件的最大乘积 输入例子1: 3 4 1 2 输出例子1: ...
  • wuxiaosi808
  • wuxiaosi808
  • 2017-08-07 17:47
  • 1682

拼多多2018校招内推编程题汇总 - java

拼多多2018校招内推编程题汇总 - java [编程题] 最大乘积 [编程题] 迷宫寻路 [编程题] 迷宫寻路 [编程题] 六一儿童节
  • mine_song
  • mine_song
  • 2017-08-06 21:13
  • 1481

网易2018校招编程题集合7

小易老师是非常严厉的,它会要求所有学生在进入教室前都排成一列,并且他要求学生按照身高不递减的顺序排列。有一次,n个学生在列队的时候,小易老师正好去卫生间了。学生们终于有机会反击了,于是学生们决定来一次疯狂的队列,他们定义一个队列的疯狂值为每对相邻排列学生身高差的绝对值总和。由于按照身高顺序排列的队列...
  • xiao_dondon
  • xiao_dondon
  • 2017-08-13 23:32
  • 755

2018拼多多内推校招编程题

最大乘积 时间限制:1秒 空间限制:32768K 给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大,要求时间复杂度: O(n),空间复杂度:O(1) 输入描述: 无序整数数组A[n] 输出描述: 满足条件的最大乘积 输入例子1: 3 4 1 2...
  • sinat_36053757
  • sinat_36053757
  • 2017-08-27 17:38
  • 345

拼多多2018校招内推编程题汇总

[编程题] 最大乘积时间限制:1秒 空间限制:32768K给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大,要求时间复杂度:O(n),空间复杂度:O(1) 输入描述: 无序整数数组A[n]输出描述: 满足条件的最大乘积输入例子1: 3 4 1 2输出例子1: 2...
  • NichChen
  • NichChen
  • 2017-08-13 21:56
  • 354

拼多多-最大乘积-c/c++

[编程题] 最大乘积 时间限制:1秒 空间限制:32768K 给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大, 要求时间复杂度:O(n),空间复杂度:O(1)
  • xiebingbing103
  • xiebingbing103
  • 2017-09-03 11:21
  • 363

【笔试题】网易2018秋招内推笔试

今天下午3点到五点做了网易秋招内推笔试题,晚上的时候牛妹就把编程题的答案发出来了,听说有几万人参加了,吓死。。。。。感觉自己太弱。网易内推笔试,大神作答下面是我做的三道笔试题,一共有八道。。。。。题目一问题描述 小易有一个长度为n的整数序列,a_1,…,a_n。然后考虑在一个空序列b上进行n次以下...
  • wenqiang1208
  • wenqiang1208
  • 2017-08-13 13:41
  • 3034

今日头条2017秋季校招在线编程题解法参考

题目请移步到:http://blog.csdn.net/lzuacm/article/details/52699793 以下先写出我的解法 题目1: String Shifting import java.util.Iterator; import java.util.LinkedList; ...
  • hegan2010
  • hegan2010
  • 2016-09-30 22:34
  • 1018
    个人资料
    • 访问:12230次
    • 积分:1018
    • 等级:
    • 排名:千里之外
    • 原创:94篇
    • 转载:6篇
    • 译文:0篇
    • 评论:1条
    文章分类
    最新评论