问题背景
给你一个整数数组 numsnumsnums,请你返回长度为 333 的 子数组,满足第一个数和第三个数的和恰好为第二个数的一半。
子数组 指的是一个数组中连续 非空 的元素序列。
数据约束
- 3≤nums.length≤1003 \le nums.length \le 1003≤nums.length≤100
- −100≤nums[i]≤100-100 \le nums[i] \le 100−100≤nums[i]≤100
解题过程
遍历已经是最简单的做法了,需要注意的是除法会发生向下取整,将除法转化为乘法。
由于数据范围非常小,不必考虑溢出的问题。
具体实现
class Solution {
public int countSubarrays(int[] nums) {
int res = 0;
for (int i = 2; i < nums.length; i++) {
if ((nums[i] + nums[i - 2]) * 2 == nums[i - 1]) {
res++;
}
}
return res;
}
}