题解 | #连续子数组的最大乘积#

连续子数组的最大乘积

http://www.nowcoder.com/practice/fd8c819c07c9493887bfac8549c119f4

动态规划(C++)

这个时leecode的思路,可以看看。

alt

#include<iostream>
#include<vector>

#define INT_MAX 0x7fffffff
#define INT_MIN 0x80000000
using namespace std;

int maxMuti(vector<int> &arr,int nums){
    
    int GMax = arr[0];
    int GMin = arr[0];
    int max_n = INT_MIN;
    //(1)
    for(int i = 1;i < nums; i++){
        int mx = GMax, mn = GMin;
        GMax = max(mx * arr[i] , max(mn*arr[i] , arr[i]));
        GMin = min(mn * arr[i] , min(mx*arr[i] , arr[i]));
        max_n = max(GMax , max_n);
        //cout << GMax <<endl;
    }
    return max_n;
}

int main(){
    int nums;
    cin >> nums;
    vector<int> arr(nums);
    
    for(int i = 0;i < nums; i++){
        cin >> arr[i];
    }
    //(2)
    //这里是为了处理只有一个输入的情况。。。因为在(1)中遍历时会从第二个开始遍历,
    //所以边界问题得解决。
    cout << max(maxMuti(arr,nums),arr[0]) << endl;
    return 0;
}

全部评论
int max_n = INT_MIN;这里有问题,max_n也应该为arr[0],因为如果arr[0]最大的话,最终结果取不到arr[0]
1 回复 分享
发布于 2023-04-02 15:28 四川

相关推荐

Lorn的意义:你这种岗位在中国现在要么牛马天天加班,要么关系户进去好吃好喝,8年时间,真的天翻地覆了,对于资本来说你就说一头体力更好的牛马,哎,退伍没有包分配你真的亏了。
点赞 评论 收藏
分享
积极的小学生不要香菜:你才沟通多少,没500不要说难
点赞 评论 收藏
分享
07-22 11:53
门头沟学院 Java
终于有一个保底的offer了,但感觉是白菜价
北凝a:我想问问,提前批的offer 有问你啥时候到岗吗,如果你还想找其他的怎么办
点赞 评论 收藏
分享
评论
10
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务