ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Leetcode 2348:零填充子数组的数量

2023-03-21 12:39:56  阅读:460  来源: 互联网

标签:编程 算法  TypeScript


使用数组时,经常会遇到需要计算满足特定条件的子数组数的问题。在本文中,我们将讨论一个 TypeScript 解决方案,用于计算整数数组中填充为 0 的子数组的数量。我们将提供代码的分步说明,以及其时间和空间的复杂性。

问题陈述

给定一个整数数组,我们需要计算填充 0 的子数组的数量。子数组是数组中连续的非空元素序列。nums

假设。那么输出应该是 .作为子数组出现 [4] 有 0 次出现。作为子数组出现 [2,0] 有 0 次出现。没有出现大小大于 2 的子数组,填充 0。因此,我们返回 6。nums = [1,3,0,0,2,0,0,4]6

溶液

我们可以通过遍历给定的数组并检查任何连续的数组来解决这个问题。我们保留所有此类子数组的计数,并在末尾返回计数。nums0

这是相同的 TypeScript 代码:

函数 zeroFilledSubarray(nums: number[]): number {
 // 初始化总和为零
的子数组数的计数 let count = 0;
 初始化子数组
中连续零数的计数,让 currentCount = 0;
 遍历数组
 for (let i = 0; i < nums。长度;i++) { // 如果当前元素为零
,则 (nums[i] === 0) {

 // 递增当前计数
 currentCount++;
 将当前计数添加到总计数计数
 += 当前计数中;
 如果当前元素不为零
 } 否则 {
 // 将当前计数重置为零
 currentCount = 0;
 }

} // 返回总计数返回计数
;
}

让我们逐行分解代码:

  • 我们定义了一个函数,它接受一个整数数组并返回一个数字。zeroFilledSubarraynums
  • 我们将两个变量初始化为 0。countcurrentCount
  • 我们使用循环遍历数组。numsfor
  • 如果 的当前元素等于 0,则递增 1 并将其添加到 .这是因为我们找到了一个连续 0 的子数组,我们需要将该子数组的计数添加到总数中。numscurrentCountcount
  • 如果当前元素 不等于 0,则重置为 0。这是因为如果我们遇到一个非零元素,则连续 0 的当前子数组被破坏。numscurrentCount
  • 最后,我们返回填充的所有子数组的计数。0

时间复杂度

上述函数的时间复杂度是给定数组的长度在哪里。这是因为我们只遍历整个数组一次。O(n)nnums

空间复杂性

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 定义函数。我们将输入参数的类型指定为整数数组,将函数的返回类型指定为数字。zeroFilledSubarraynums

循环遍历数组

在上面的代码中,我们使用循环来迭代给定的数组。我们从索引 0 开始循环,并使用数组的 length 属性继续到数组的末尾。fornumsnums

计数子数组

为了计算填充 0 的子数组的数量,我们使用两个变量和 .我们将这两个变量初始化为 0。我们用来跟踪到目前为止我们遇到的连续零的数量。countcurrentCountcurrentCount

如果当前元素为 0,则我们递增 1 并将其添加到 .这是因为我们找到了一个连续 0 的子数组,我们需要将该子数组的计数添加到总数中。numscurrentCountcount

如果当前元素 不是 0,则重置为 0。这是因为如果我们遇到一个非零元素,则连续 0 的当前子数组被破坏。我们需要从下一个位置再次开始计数。numscurrentCount

返回计数

最后,我们返回 的值。这是给定数组中填充为 0 的所有子数组的总数。countnums

引用

如果您有兴趣了解有关本文中涵盖的主题的更多信息,请查看以下资源:

  • Leet代码问题 2348
  • 打字稿文档
  • 大O表示法

标签:编程,算法, TypeScript
来源:

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有