leetcode 2348. 全 0 子数组的数目 中等

给你一个整数数组 nums ,返回全部为 0子数组 数目。

子数组 是一个数组中一段连续非空元素组成的序列。

示例 1:

复制代码
输入:nums = [1,3,0,0,2,0,0,4]
输出:6
解释:
子数组 [0] 出现了 4 次。
子数组 [0,0] 出现了 2 次。
不存在长度大于 2 的全 0 子数组,所以我们返回 6 。

示例 2:

复制代码
输入:nums = [0,0,0,2,0,0]
输出:9
解释:
子数组 [0] 出现了 5 次。
子数组 [0,0] 出现了 3 次。
子数组 [0,0,0] 出现了 1 次。
不存在长度大于 3 的全 0 子数组,所以我们返回 9 。

示例 3:

复制代码
输入:nums = [2,10,2019]
输出:0
解释:没有全 0 子数组,所以我们返回 0 。

提示:

  • 1 <= nums.length <= 10^5
  • -10^9 <= nums[i] <= 10^9

分析:遍历整个 nums 数组,一段连续的 0 能构成的全 0 子数组的个数为 (1+len)*len/2,其中 len 为连续的 0 的个数。

cpp 复制代码
long long zeroFilledSubarray(int* nums, int numsSize) {
    long long ans=0,len=0;
    for(int i=0;i<numsSize;++i)
    {
        if(!nums[i])len++;
        else ans+=(1+len)*len/2LL,len=0;
    }
    ans+=(1+len)*len/2LL;
    return ans;
}
相关推荐
Tisfy6 小时前
LeetCode 837.新 21 点:动态规划+滑动窗口
数学·算法·leetcode·动态规划·dp·滑动窗口·概率
tkevinjd8 小时前
图论\dp 两题
leetcode·动态规划·图论
1白天的黑夜112 小时前
链表-2.两数相加-力扣(LeetCode)
数据结构·leetcode·链表
上海迪士尼3513 小时前
力扣子集问题C++代码
c++·算法·leetcode
熬了夜的程序员13 小时前
【LeetCode】16. 最接近的三数之和
数据结构·算法·leetcode·职场和发展·深度优先
Miraitowa_cheems13 小时前
LeetCode算法日记 - Day 15: 和为 K 的子数组、和可被 K 整除的子数组
java·数据结构·算法·leetcode·职场和发展·哈希算法
无聊的小坏坏1 天前
拓扑排序详解:从力扣 207 题看有向图环检测
算法·leetcode·图论·拓扑学
浮灯Foden1 天前
算法-每日一题(DAY13)两数之和
开发语言·数据结构·c++·算法·leetcode·面试·散列表