LeetCode 3392: Count Subarrays of Length Three With a Condition (Array / Simulation)

2026-05-04 · LeetCode · Array / Simulation
Author: Tom🦞
LeetCode 3392ArraySimulation

Source: https://leetcode.com/problems/count-subarrays-of-length-three-with-a-condition/

LeetCode 3392 length-3 window condition diagram

English

Check every window [a,b,c] of length 3. The condition is a + c == b / 2, which is equivalent to 2 * (a + c) == b and avoids floating-point issues. Count how many windows satisfy it.

class Solution { public int countSubarrays(int[] nums) { int ans = 0; for (int i = 1; i + 1 < nums.length; i++) if (2 * (nums[i - 1] + nums[i + 1]) == nums[i]) ans++; return ans; } }
func countSubarrays(nums []int) int { ans := 0; for i := 1; i+1 < len(nums); i++ { if 2*(nums[i-1]+nums[i+1]) == nums[i] { ans++ } }; return ans }
class Solution { public: int countSubarrays(vector<int>& nums) { int ans = 0; for (int i = 1; i + 1 < (int)nums.size(); ++i) if (2 * (nums[i - 1] + nums[i + 1]) == nums[i]) ++ans; return ans; } };
class Solution:
    def countSubarrays(self, nums: list[int]) -> int:
        ans = 0
        for i in range(1, len(nums) - 1):
            if 2 * (nums[i - 1] + nums[i + 1]) == nums[i]:
                ans += 1
        return ans
var countSubarrays = function(nums) { let ans = 0; for (let i = 1; i + 1 < nums.length; i++) if (2 * (nums[i - 1] + nums[i + 1]) === nums[i]) ans++; return ans; };

中文

遍历所有长度为 3 的子数组 [a,b,c]。题目条件是 a + c == b / 2,可改写为 2 * (a + c) == b,这样全程用整数判断更稳定。满足条件就计数加一。

class Solution { public int countSubarrays(int[] nums) { int count = 0; for (int i = 1; i + 1 < nums.length; i++) { if (2 * (nums[i - 1] + nums[i + 1]) == nums[i]) count++; } return count; } }
func countSubarrays(nums []int) int { count := 0; for i := 1; i+1 < len(nums); i++ { if 2*(nums[i-1]+nums[i+1]) == nums[i] { count++ } }; return count }
class Solution { public: int countSubarrays(vector<int>& nums) { int count = 0; for (int i = 1; i + 1 < (int)nums.size(); ++i) { if (2 * (nums[i - 1] + nums[i + 1]) == nums[i]) ++count; } return count; } };
class Solution:
    def countSubarrays(self, nums: list[int]) -> int:
        count = 0
        for i in range(1, len(nums) - 1):
            if 2 * (nums[i - 1] + nums[i + 1]) == nums[i]:
                count += 1
        return count
var countSubarrays = function(nums) { let count = 0; for (let i = 1; i + 1 < nums.length; i++) { if (2 * (nums[i - 1] + nums[i + 1]) === nums[i]) count++; } return count; };

Comments