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

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

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

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(new BufferedInputStream(System.in));
        int n = scan.nextInt();
        int[] nums = new int[n];
        for (int i = 0; i < n; i++)
            nums[i] = scan.nextInt();
        int res = 0;
        int minCount = 0, maxCount = 0;
        for (int i = 0; i < n; i++) {
            if (nums[i] > 0) {
                maxCount++;
                if (minCount > 0)
                    minCount++;
            } else if (nums[i] < 0) {
                int tmp = minCount;
                minCount = maxCount + 1;
                if (tmp > 0)
                    maxCount = tmp + 1;
                else 
                    maxCount = 0;
            } else {
                maxCount = 0;
                minCount = 0;
            }
            res = Math.max(res, maxCount);
        }
        System.out.println(res);
    }
}
全部评论

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务