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;
}
相关推荐
小年糕是糕手2 小时前
【C++】类和对象(二) -- 构造函数、析构函数
java·c语言·开发语言·数据结构·c++·算法·leetcode
sheeta19987 小时前
LeetCode 每日一题笔记 日期:2025.11.24 题目:1018. 可被5整除的二进制前缀
笔记·算法·leetcode
橘颂TA15 小时前
【剑斩OFFER】算法的暴力美学——两整数之和
算法·leetcode·职场和发展
Dream it possible!16 小时前
LeetCode 面试经典 150_二叉搜索树_二叉搜索树的最小绝对差(85_530_C++_简单)
c++·leetcode·面试
xxxxxxllllllshi16 小时前
【LeetCode Hot100----14-贪心算法(01-05),包含多种方法,详细思路与代码,让你一篇文章看懂所有!】
java·数据结构·算法·leetcode·贪心算法
-森屿安年-19 小时前
LeetCode 283. 移动零
开发语言·c++·算法·leetcode
元亓亓亓21 小时前
LeetCode热题100--79. 单词搜索
算法·leetcode·职场和发展
2501_941143731 天前
缓存中间件Redis与Memcached在高并发互联网系统优化与实践经验分享
leetcode
Elias不吃糖1 天前
LeetCode每日一练(209, 167)
数据结构·c++·算法·leetcode
野蛮人6号1 天前
力扣热题100道前62道,内容和力扣官方稍有不同,记录了本人的一些独特的解法
数据结构·算法·leetcode