栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

leetcode-6129:全 0 子数组的数目

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

leetcode-6129:全 0 子数组的数目

leetcode-6129:全 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 。

解题 方法一:滑动窗口+等差数列

记录连续0的数组长度 以及 对应它们出现的个数
通过滑动窗口来实现。

然后根据连续0的数组长度和出现的次数,来计算全0的子数组个数。

比如对于 [0,0,0]
一个0的个数 为:3
两个0的个数为:2
三个0的个数为:1
因此全0的子数组个数为(1+3)*3/2
最后再乘上[0,0,0]出现的次数就行了

class Solution {
public:
    long long zeroFilledSubarray(vector& nums) {
        int n=nums.size();
        unordered_map cnt;//连续的0数量---->个数
        int left=0,right=0;
        while(right
            while(left
            res+=(1ll+it.first)*it.first/2 *it.second;
        }
        return res;


    }
};
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1027020.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号