Leetcode 2348:零填充子数组的数量-icode9专业技术文章分享
互联网 2023/3/22 22:50:15
使用数组时,经常会遇到需要计算满足特定条件的子数组数的问题。在本文中,我们将讨论一个 TypeScript 解决方案,用于计算整数数组中填充为 0 的子数组的数量。我们将提供代码的分步说明,以及其时间和空间的复杂性。
问题陈述
给定一个整数数组,我们需要计算填充 0 的子数组的数量。子数组是数组中连续的非空元素序列。nums
例
假设。那么输出应该是 .作为子数组出现 [4] 有 0 次出现。作为子数组出现 [2,0] 有 0 次出现。没有出现大小大于 2 的子数组,填充 0。因此,我们返回 6。nums = [1,3,0,0,2,0,0,4]
6
溶液
我们可以通过遍历给定的数组并检查任何连续的数组来解决这个问题。我们保留所有此类子数组的计数,并在末尾返回计数。nums
0
这是相同的 TypeScript 代码:
函数 zeroFilledSubarray(nums: number[]): number { // 初始化总和为零 的子数组数的计数 let count = 0; 初始化子数组 中连续零数的计数,让 currentCount = 0; 遍历数组 for (let i = 0; i < nums。长度;i++) { // 如果当前元素为零 ,则 (nums[i] === 0) { // 递增当前计数 currentCount++; 将当前计数添加到总计数计数 += 当前计数中; 如果当前元素不为零 } 否则 { // 将当前计数重置为零 currentCount = 0; } } // 返回总计数返回计数 ; }
让我们逐行分解代码:
- 我们定义了一个函数,它接受一个整数数组并返回一个数字。
zeroFilledSubarray
nums
- 我们将两个变量初始化为 0。
count
currentCount
- 我们使用循环遍历数组。
nums
for
- 如果 的当前元素等于 0,则递增 1 并将其添加到 .这是因为我们找到了一个连续 0 的子数组,我们需要将该子数组的计数添加到总数中。
nums
currentCount
count
- 如果当前元素 不等于 0,则重置为 0。这是因为如果我们遇到一个非零元素,则连续 0 的当前子数组被破坏。
nums
currentCount
- 最后,我们返回填充的所有子数组的计数。
0
时间复杂度
上述函数的时间复杂度是给定数组的长度在哪里。这是因为我们只遍历整个数组一次。O(n)
n
nums
空间复杂性
The space complexity of the above function is as we are not using any additional data structure for computation.O(1)
Implementation
Let’s look at some of the implementation details of the above code:
打字稿
TypeScript 是 JavaScript 的一个超集,它为语言添加了可选的静态类型和其他功能。由于其类型安全性、增强的工具和更好的代码组织,它在开发人员中越来越受欢迎。
在上面的代码中,我们使用 TypeScript 定义函数。我们将输入参数的类型指定为整数数组,将函数的返回类型指定为数字。zeroFilledSubarray
nums
循环遍历数组
在上面的代码中,我们使用循环来迭代给定的数组。我们从索引 0 开始循环,并使用数组的 length 属性继续到数组的末尾。for
nums
nums
计数子数组
为了计算填充 0 的子数组的数量,我们使用两个变量和 .我们将这两个变量初始化为 0。我们用来跟踪到目前为止我们遇到的连续零的数量。count
currentCount
currentCount
如果当前元素为 0,则我们递增 1 并将其添加到 .这是因为我们找到了一个连续 0 的子数组,我们需要将该子数组的计数添加到总数中。nums
currentCount
count
如果当前元素 不是 0,则重置为 0。这是因为如果我们遇到一个非零元素,则连续 0 的当前子数组被破坏。我们需要从下一个位置再次开始计数。nums
currentCount
返回计数
最后,我们返回 的值。这是给定数组中填充为 0 的所有子数组的总数。count
nums
引用
如果您有兴趣了解有关本文中涵盖的主题的更多信息,请查看以下资源:
- Leet代码问题 2348
- 打字稿文档
- 大O表示法
标签:编程,算法, TypeScript 来源:
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

关于找一找教程网
本站文章仅代表作者观点,不代表本站立场,所有文章非营利性免费分享。
本站提供了软件编程、网站开发技术、服务器运维、人工智能等等IT技术文章,希望广大程序员努力学习,让我们用科技改变世界。
[Leetcode 2348:零填充子数组的数量-icode9专业技术文章分享]http://www.zyiz.net/tech/detail-400153.html
- 2023-03-23如何基于Security框架兼容多套用户密码加密方式
- 2023-03-23刷爆 LeetCode 双周赛 100,单方面宣布第一题最难
- 2023-03-23快速构建一个基于PyQt MVC的用户登陆模块
- 2023-03-23如何让ChatGPT帮我写一个ChatGPT
- 2023-03-22为什么 Rust 有如此复杂的语法-icode9专业技术文章分享
- 2023-03-22一个简单的脚本,以保持活跃在Microsoft Teams上(适用于Mac)-icode9专业技术文章分享
- 2023-03-22Scrapy详细使用教程-icode9专业技术文章分享
- 2023-03-22Scrapy框架的各组件功能与使用-icode9专业技术文章分享
- 2023-03-22使用Scrapy框架常用九种反爬策略-icode9专业技术文章分享
- 2023-03-12大佬们帮我看看怎么输出到Excel中是空的?