牛客真题(21)-最大乘积

继续刷牛客真题,求一个给定数组中,某三个数的乘积的最大值。

分析:
首先对于给定的数组,可能是乱序的,就需要对数组进行排序,按照从下到大排序的时候,最大乘积分两种可能,一种是最大,次大,次次大三个数,一种是最大,最小,次小(可能存在负数的情况)。然后比较两种情况的大小,输出较大的。

问题:
1、Python中sorted函数返回的是一个新的列表。
2、bug:如果输入的数的个数小于3,那么结果会是多少???

附上C++代码:

#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int main()
{
    int n;
    cin>>n;
    vector<long long> A;
    long long x;
    for(int i=0;i<n;i++)
    {
        cin>>x;
        A.push_back(x);
    }
    if(n<3)
        cout<<0<<endl;
    else
    {
        sort(A.begin(),A.end());
        long long r=max(A[0]*A[1]*A[n-1],A[n-3]*A[n-2]*A[n-1]);
        cout<<r<<endl;
    }
    return 0;
}

附上Python代码:

n=int(input())
A=list(map(int,input().split()))
A=sorted(A)
print(max(A[0]*A[1]*A[-1],A[-1]*A[-2]*A[-3]))

猜你喜欢

转载自blog.csdn.net/JerryZengZ/article/details/89382386
今日推荐