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

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

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

#include<stdio.h>
#include<string.h>
/*借鉴别人的代码,理解*/
int max(int a,int b)
{
    return a>b?a:b;
}
int main()
{
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        int ret[100001];
        int count=0;
        int sum=0;
        int mincnt=0;
        int maxcnt=0;
        for(int i=1;i<=n;i++)
        {
            scanf("%d ",&ret[i]);
        }
        for(int i=1;i<=n;i++)
        {
            if(ret[i]>0)
            {
                maxcnt++;
                if(mincnt>0)
                {
                    mincnt++;
                }
            }
            else if(ret[i]<0)
            {
                int tmp=mincnt;
                mincnt=maxcnt+1;
                if(tmp>0)
                {
                    maxcnt=tmp+1;
                }
                else
                {
                    maxcnt=0;
                }
            }
            else
            {
                mincnt=0;
                maxcnt=0;
            }
            count=max(count,maxcnt);
        }
        printf("%d",count);
    }
    return 0;
}
全部评论

相关推荐

寿命齿轮:实习就一段还拉了,项目一看就不是手搓,学历也拉了,技术栈看着倒是挺好,就是不知道面试表现能咋样。 不过现在才大三,争取搞两端大厂实习,或者一个纯个人项目+一段大厂,感觉秋招还是未来可期。
投递美团等公司10个岗位
点赞 评论 收藏
分享
AFBUFYGRFHJLP:直接去美帝试试看全奖phd吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务