※ 引述《yam276 (史萊哲林的優等生)》之銘言:
: 3392. Count Subarrays of Length Three With a Condition
: https://leetcode.com/problems/count-subarrays-of-length-three-with-a-condition/
: 簡單來說 任意三個數的子陣列切片
: 中間的數 要是兩邊相加除二
: 思考:
: Sliding Windows
: 而且 Rust 居然有內建 .widnows() 函數
: 沒內建的語言用
: for i in 0..nums.len()-2 {
: let a = nums[i];
: let b = nums[i+1];
: let c = nums[i+2];
: // ...
: }
: Code:
: impl Solution {
: pub fn count_subarrays(nums: Vec<i32>) -> i32 {
: nums.windows(3)
: .filter(|w| w[1] % 2 == 0 && w[1] / 2 == w[0] + w[2])
: .count() as i32
: }
: }
思路:
照題目敘述做題 一路滑到底就是答案
Python Code:
class Solution:
def countSubarrays(self, nums: List[int]) -> int:
result = 0
for i in range(len(nums)-2):
if nums[i] + nums[i+2] == nums[i+1] / 2:
result += 1
return result