目标
给你一个整数数组 nums ,请你返回长度为 3 的 子数组,满足第一个数和第三个数的和恰好为第二个数的一半。
子数组 指的是一个数组中连续 非空 的元素序列。
示例 1:
输入:nums = [1,2,1,4,1]
输出:1
解释:
只有子数组 [1,4,1] 包含 3 个元素且第一个和第三个数字之和是中间数字的一半。number.
示例 2:
输入:nums = [1,1,1]
输出:0
解释:
[1,1,1] 是唯一长度为 3 的子数组,但第一个数和第三个数的和不是第二个数的一半。
说明:
- 3 <= nums.length <= 100
- -100 <= nums[i] <= 100
思路
求数组 nums
中长度为 3
且满足条件的子数组个数,子数组需满足两边元素和 是中间元素的一半。
依题意模拟即可。
代码
/**
* @date 2025-04-27 0:14
*/
public class CountSubarrays3392 {
public int countSubarrays(int[] nums) {
int n = nums.length;
int left = 0;
int res = 0;
for (int right = 2; right < n; right++) {
if ((nums[left++] + nums[right]) * 2 == nums[right - 1]) {
res++;
}
}
return res;
}
}