跳至主要内容

2348. Number of Zero-Filled Subarrays

題意

給定一個數字陣列,找出所有元素只含有 0subarray 個數

限制

  • 1 <= nums.length <= 10510^5

  • 109-10^9<= nums[i] <=10910^9

解題思路

思考 00000

  • 0 ⇒ 1

  • 0000 + _0 ⇒ 2

  • 000000 + _00 + __0 ⇒ 3

以此類推,一個長度為n的連續0陣列,數量會是 i=1ni\sum\limits_{i=1}^n i

Coding流程

  • 遍歷陣列

    • 遇到0,則開始計算連續0的數量並加到總數上 (會開始1 + 2 + 3 … 直到最後一個0)

    • 非0則將連續0的記數歸0

Solution

class Solution {
public:
long long zeroFilledSubarray(vector<int>& nums) {
int curr = 0;
long long ans = 0;
for (int n: nums){
if (n == 0) {
curr++;
ans += curr;
} else
curr = 0;
}
return ans;
}
};