LeetCode 560 和为 K 的子数组

news/2024/11/28 15:42:48/

LeetCode 560 和为 K 的子数组

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/subarray-sum-equals-k/description

博主Github:https://github.com/GDUT-Rp/LeetCode

题目:

给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的连续子数组的个数 。

示例 1:

输入:nums = [1,1,1], k = 2
输出:2

示例 2:

输入:nums = [1,2,3], k = 3
输出:2

提示:

  • 1 <= nums.length <= 2 ∗ 1 0 4 2 * 10^4 2104
  • 1000 <= nums[i] <= 1000
  • 1 0 7 10^7 107 <= k <= 1 0 7 10^7 107

解题思路:

方法一:枚举

直接逐个枚举,就得到答案

Golang

func subarraySum(nums []int, k int) int {var ans intfor i:=0; i<len(nums); i++ {sum := nums[i]if sum == k {ans ++}for j:=i+1; j<len(nums); j++ {sum += nums[j]if sum == k {ans ++continue                }}}return ans
}

复杂度分析

时间复杂度: O ( n 2 ) O(n^2) O(n2),其中 n 为数组的长度。枚举子数组开头和结尾需要 O ( n 2 ) O(n^2) O(n2) 的时间,其中求和需要 O(1) 的时间复杂度,因此总时间复杂度为 O ( n 2 ) O(n^2) O(n2)

空间复杂度: O ( 1 ) O(1) O(1)
在这里插入图片描述

方法二:前缀和+map

遍历到每个值,可以统计出来前缀和,然后前缀和放到map去,例如k=7,m[7]=1, 到了m[14-7]的时候就可以有符合的条件。

Golang

func subarraySum(nums []int, k int) int {var (count intpre int)m := make(map[int]int)m[0] = 1for i := 0; i < len(nums); i++ {pre += nums[i]// pre[i] = pre[i-1] + nums[i]// pre[i] - pre[j-1] = k// pre[j-1] == pre[i] - kif v, ok := m[pre - k]; ok {count += v}m[pre] += 1}return count
}

复杂度分析

时间复杂度: O ( n ) O(n) O(n)

空间复杂度: O ( n ) O(n) O(n)

在这里插入图片描述


http://www.ppmy.cn/news/109755.html

相关文章

SOLIDWORKS钣金成形工具

SOLIDWORKS钣金成形工具主要用来创建使用冲制或压印制作的钣金特征。成形工具的工作原理是&#xff1a;几何体代表冲制或压印形成的凹陷区域&#xff0c;停止面是指工具要被应用到的钣金面&#xff0c;也可以定义移除面&#xff0c;若定义了移除面&#xff0c;则该面会形成通孔…

大数据NoSQL数据库HBase集群部署——详细讲解~

大数据NoSQL数据库HBase集群部署 简介 HBase 是一种分布式、可扩展、支持海量数据存储的 NoSQL 数据库。 和Redis一样&#xff0c;HBase是一款KeyValue型存储的数据库。 不过和Redis设计方向不同 Redis设计为少量数据&#xff0c;超快检索HBase设计为海量数据&#xff0c;…

基于深度学习的高精度家禽猪检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要&#xff1a;基于深度学习的高精度家禽猪检测识别系统可用于日常生活中或野外来检测与定位家禽猪目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的家禽猪目标检测识别&#xff0c;另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5目标检…

Games104现代游戏引擎学习笔记11

胶囊&#xff1a;两层。 内层&#xff1a;真正碰撞的层级 外层&#xff1a;类似保护膜&#xff0c;防止离别的东西太近&#xff0c;高速移动时卡进物体。另一个作用是防止过于贴近摄像机的进平面&#xff0c;看到墙背后的物体 朝墙移动时&#xff0c;实际往往并不是撞击&#…

mysql死锁(dead lock)与锁等待(lock wait)

很多人都分不清死锁和锁等待的区别&#xff0c;也有不同IT口的人叫法的差异。在运维侧&#xff1a; 死锁最明显的特征是会自动解开&#xff0c;是需要我们去事后解决逻辑缺陷。 锁等待则是业务卡住了&#xff08;一般是某个大事务还在执行&#xff0c;或有事务没提交&#xf…

违章停车车牌识别:使用YOLOv5进行车牌检测与识别

文末含有完整代码 目录 介绍准备工作数据集准备训练YOLOv5模型车牌识别违章停车检测总结与展望 1. 介绍 违章停车问题在城市中是一个很常见的交通问题。为了有效地管理违章停车问题&#xff0c;我们需要对违停车辆进行识别。本篇博客将向您展示如何使用YOLOv5进行车牌检测与…

C#初步了解复杂数据类型,函数方法和排序

文章目录 1.复杂数据类型&#xff08;1&#xff09;枚举&#xff08;2&#xff09;数组&#xff08;3&#xff09;结构体 2.数值型和引用类型3.函数4. 初级排序 1.复杂数据类型 &#xff08;1&#xff09;枚举 枚举是一组命名整型常量。枚举类型是使用 enum 关键字声明的。 …

Scala基本语法

1.注释 Scala注释使用和Java完全一样。 注释是一个程序员必须要具有的良好编程习惯。 将自己的思想通过注释先整理出来&#xff0c;再用代码去体现。 基本语法 单行注释&#xff1a;// 多行注释&#xff1a;/* */ 文档注释&#xff1a; /** * */ 2.变量和常量 基本语法 va…