3392.统计符合条件长度为3的子数组数目

目标

给你一个整数数组 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;
    }

}

性能

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注