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;
}
相关推荐
VT.馒头9 小时前
【力扣】2625. 扁平化嵌套数组
前端·javascript·算法·leetcode·职场和发展·typescript
毅炼10 小时前
hot100打卡——day17
java·数据结构·算法·leetcode·深度优先
Tisfy10 小时前
LeetCode 3010.将数组分成最小总代价的子数组 I:排序 OR 维护最小次小
算法·leetcode·题解·排序·最小次小值
草履虫建模12 小时前
力扣算法 121. 买卖股票的最佳时机
算法·leetcode·职场和发展·贪心算法·动态规划·一次遍历
爱尔兰极光12 小时前
LeetCode--有序数组的平方
算法·leetcode·职场和发展
haluhalu.12 小时前
LeetCode---基础算法刷题指南
数据结构·算法·leetcode
iAkuya12 小时前
(leetcode)力扣100 58组合总和(回溯)
算法·leetcode·职场和发展
爱尔兰极光13 小时前
LeetCode--移除元素
算法·leetcode·职场和发展
苦藤新鸡13 小时前
51.课程表(拓扑排序)-leetcode207
数据结构·算法·leetcode·bfs