import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型ArrayList
* @return int整型
*/
public int findLongestSubArray (ArrayList<Integer> nums) {
// write code here
if (1 == nums.size()) {
return nums.get(0) > 0 ? 1 : 0;
}
int res = 0;
int[] dp = new int[nums.size()];
dp[0] = nums.get(0) > 0 ? 1 : 0;
for (int i = 1; i < nums.size(); i++) {
if (nums.get(i) > 0) { // 如果当前位置是正数
dp[i] = dp[i - 1] + 1;
}
else if (nums.get(i) < 0) { // 如果当前位置是负数
if ((i - 1 - dp[i - 1]) >= 0 && nums.get(i - 1 - dp[i - 1]) < 0) {
dp[i] = dp[i - 1] + 2;
if ((i - 2 - dp[i - 1]) >= 0) {
dp[i] = dp[i] + dp[i - 2 - dp[i - 1]];
}
}
}
res = Math.max(res, dp[i]);
}
return res;
}
}