public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型ArrayList * @param l int整型 * @param r int整型 * @return int整型 */
public int countSubarray (ArrayList<Integer> nums, int l, int r) { // write code here int[] dp = new int[nums.size()]; int temp = 0; int big = 0; int small = 0; boolean fix=false; int op=0; for (int i = 0; i < nums.size(); i++) { int c = nums.get(i); if (c >= l && c <= r) { fix=true; temp = i + 1 - big; dp[i] = dp[i > 0 ? i - 1 : 0] + temp; op=i; } else if (c < l) { if(!fix){ dp[i]=dp[i>0?i-1:0]; } else { small =op+1-big; dp[i] = dp[i > 0 ? i - 1 : 0] + small; } } else { fix=false; dp[i] = dp[i > 0 ? i - 1 : 0]; big = i+1; } } return dp[nums.size() - 1]; }