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

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

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

#include <bits/stdc++.h>

int main(int argc, char *argv[]) {
  int len, val, neg, pos, res;
  neg = pos = res = 0;

  std::cin >> len;

  for (int i = 0; i < len; ++i) {
    std::cin >> val;
    
    if (val > 0) {
      ++pos;
      neg = neg == 0 ? 0 : neg + 1;
    } else if (val < 0) {
      int tmp = neg;
      neg = pos + 1;
      pos = tmp == 0 ? 0 : tmp + 1; 
    } else {
      neg = pos = 0;
    }

    res = std::max(res, pos);
  }

  std::cout << res << std::endl;

  return 0;
}

全部评论

相关推荐

怎么起名字:学历不足,
点赞 评论 收藏
分享
10-31 14:54
已编辑
门头沟学院 算法工程师
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务