题解 | #乘积为正数的最长连续子数组#

乘积为正数的最长连续子数组

http://www.nowcoder.com/practice/0112b9b5a09048d89309f55ea666db91

  • 同时保存最长负值数组与最长正值数组长度,分别为n,p;
  • 1.当读入的为负值时,进行p与n的交换;
  • 2.当读入的为正值时,p与n都加一;
  • 3.当读入的为零值时,p与n都设为0;

#include<iostream>
using namespace std;
int main()
{
    int n,positive = 0,negative = 0,val,len = 0;
    cin >> n;
    for(int i = 1;i <= n;++i){
        cin >> val;
        if(val > 0){
            positive++;
            negative = negative == 0 ? 0 : negative + 1;
        }
        else if(val < 0){
            int temp = negative;
            negative = positive + 1;
            positive = temp == 0 ? 0 : temp + 1;
        }
        else{
            positive = 0;
            negative = 0;
        }
        len = max(len,positive);
    }
    cout << len ;
}
全部评论
思路很清楚,赞
点赞 回复 分享
发布于 2022-08-28 21:45 湖北
被你这个思路误导了兄弟,1.当读入的为负值时,进行p与n的交换; 2.当读入的为正值时,p与n都加一; 这两条就很怪异,我使用一组新的数据,结果是错的: 6 1 2 3 -5 1 -1 3 明显不对好吧!
点赞 回复 分享
发布于 2023-01-30 20:30 广东
太妙了,我的猪脑壳什么时候也能这么聪明
点赞 回复 分享
发布于 2023-04-02 16:48 四川

相关推荐

贺兰星辰:不要漏个人信息,除了简历模板不太好以外你这个个人简介是不是太夸大了...
点赞 评论 收藏
分享
吃不饱的肱二头肌很想退休:tnnd 我以为选妹子呢,亏我兴高采烈的冲进来😠
投递快手等公司10个岗位
点赞 评论 收藏
分享
15 1 评论
分享
牛客网
牛客企业服务