leecode题目:统计「优美子数组」
题目详细说明见leecode题库
java答案:
class Solution {
public int numberOfSubarrays(int[] nums, int k) {
int firstJi = -1;
int lastJi = -1;
int numSubArray = 0;
ArrayList<Integer> sum = new ArrayList<>();
for(int i = 0; i < nums.length; i++) {
if(nums[i] % 2 == 1) {
sum.add(i);
}
}
int firstIndex = 0;
int lastIndex = firstIndex+k-1;
while(lastIndex < sum.size()) {
firstJi = sum.get(firstIndex);
lastJi = sum.get(lastIndex);
int apart = 0;
int bpart = 0;
if(lastIndex != sum.size()-1) {
bpart = (sum.get(lastIndex+1)-lastJi);
} else {
bpart = (nums.length-lastJi);
}
if(firstIndex != 0) {
apart = firstJi-sum.get(firstIndex-1);
} else {
apart = firstJi+1;
}
numSubArray += apart * bpart;
firstIndex++;
lastIndex++;
}
return numSubArray;
}
}