LeetCode 560 和为 K 的子数组

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://xiahunao.cn/news/254374.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能python:Python中的画图——创建漂亮的可视化图像

Python中的画图——创建漂亮的可视化图像 Python是一个高度可编程的语言&#xff0c;因此它非常适合用于创建各种类型的可视化。 在本文中&#xff0c;我们将介绍Python中的画图。我们将讨论如何使用Python和一些流行的数据可视化库来创建漂亮的可视化图像。我们还将探讨如何…

【Linux】Linux文件权限的理解

目录 一、Shell是什么&#xff1f; 1、Shell承担用户和内核间的翻译工作 2、拒绝用户非法请求&#xff0c;保护内核 3、派生子进程执行用户指令 二、用户切换与提权 1、普通用户与root用户的切换 2、普通用户指令短暂提权 三、文件权限的理解 1、文件权限角色的权限文…

Linux文件的rwx含义,Linux文件权限rwx简单了解

Ⅰ 了解Linux下的文件权限 如上图所示,ll命令详细展示当前目录下的文件或者子目录信息 红框标注的即为此文件或者目录的权限 【第一行文件10.c的权限以-开头,用来说明这是一个文件;第四行code目录的权限以字母d开头,用来标注code是目录】 关于文件权限,我们要先了解有那些…

Linux文件权限管理命令

今天继续给大家介绍Linux基本知识&#xff0c;本文主要内容是介绍Linux文件权限相关命令。 一、chown命令修改文件属主 在Linux系统中&#xff0c;chown命令可以更改文件的属主和属组&#xff0c;chown命令使用示例如下&#xff1a; chown user.user target chown user:user…

Linux文件权限修改

Linux文件权限修改 一.文件属性查看 使用root创建一个1.txt文件进行实例 touch /opt/1.txt查看文件属性 ls -l /opt/1.txt可以看到图中红色框框内列出了文件的信息属性&#xff0c;从左到有进行性详解 1. -rw-r--r-- 参考下图进行理解 共有10个字符&#xff0c;如果第一个…

Linux文件权限的设置

本文章主要介绍了对Linux文件的权限以及如何设置权限。 一、查看文件的权限与属性 ls -l 或者 ll查看文件属性 二、可以列出如下图所示的一些信息 -rw-r--r-- 第一位代表文件类型 d 表示目录 l 表示链接文件 - 表示普通文件 b 表示快设备文…

Linux文件权限查看与修改

Linux文件的权限 linux文件的权限可以分为四类&#xff1a;可读、可写、可执行、没有权限。分别用字符r、w、x、- 表示。 2. 用户与用户组 Linux是一个多用户多任务的操作系统&#xff0c;可以通过用户和用户组来更好的控制文件的权限。 每个文件都有一个拥有者&#xff08;某一…

【C++入门】什么是内联函数?

目录 一、概念 为什么要有内联函数&#xff1f; 内联函数设计的初衷是为了替代部分 #define 宏定义 二、特性 1.空间换时间 2.编译器做主 3.声明定义放一起 总结 一、概念 以inline修饰的函数叫做内联函数&#xff0c;编译时C编译器会在调用函数的地方展开&#xff0c;没有…

CAD圆弧

import dxfgrabberinputFilePathe:/test3-11/Drawing2.dxf #输入文件的路径dxf dxfgrabber.readfile(inputFilePath)#按图层访问 # for layer in dxf.layers: # #print(layer.name,layer.color,layer.linetype) # print("图层名&#xff1a;",layer.name)l…

CAD电气制图中怎么用圆弧连接导线?

在CAD电气制图过程中经常会需要连接两条导线&#xff0c;那么你知道CAD软件中怎么用圆弧连接两条导线呢&#xff1f;浩辰CAD电气软件中提供了便捷的圆弧连接功能&#xff0c;接下来的CAD电气制图教程就和小编一起来看看浩辰CAD电气软件中圆弧连接功能的相关使用技巧吧&#xff…

php中划弧线,cad画弧形的快捷键是什么?如何画弧形?

cad画弧形的快捷键是A&#xff0c;画弧形的方法&#xff1a;首先确定圆心&#xff0c;并点击圆弧命令&#xff1b;接着继续输入C进行圆心的确定&#xff0c;并调整半径和位置&#xff1b;最后点击选择两个端点后exc退出即可完成。 cad画弧形的快捷键是A&#xff0c;画弧形的方法…

你知道CAD软件将圆弧与直线转换成多段线的方法吗?

CAD制图时想要对直线与圆弧构成的整体对象进行多段线编辑&#xff0c;首先需要将这个对象转换成多段线。本文将介绍CAD如何将直线与圆弧连接成多段线。 1.使用CAD软件打开需要进行操作的图纸文件&#xff0c;用夹点拾取一下&#xff0c;从右边的特性栏可以看到这个图形是由4条…

圆弧的绘制

圆弧的分类 圆心/起/终点画圆弧 其操作方法类似于圆命令&#xff0c;第一次单击鼠标左键&#xff0c;确定圆心&#xff0c;移动鼠标&#xff0c;再次单击鼠标左键确定半径&#xff0c;最后通过移动鼠标来确定圆弧长度&#xff08;若不移动就单击鼠标左键&#xff0c;则取消该次…

AUTOCAD——圆弧命令

创建圆弧。 执行方式 命令行&#xff1a;AEC 菜单栏&#xff1a;绘图→圆弧 工具栏&#xff1a;圆弧命令图标 “圆弧命令操作命令位置”界面 执行以上命令后&#xff0c;命令行会显示以下信息&#xff1a; 选项说明 &#xff08;1&#xff09;起点&#xff1a;指定第一个点…

chatgpt赋能python:Python中字符串的转换方法

Python中字符串的转换方法 作为一门非常强大的编程语言&#xff0c;Python在字符串的处理上也有着非常丰富的功能。在Python中&#xff0c;字符串是非常重要的数据类型之一&#xff0c;也是最常用的数据类型之一。字符串在Python中有着很多的用途&#xff0c;比如表示文本数据…

学习cad画圆弧

今天我们就来学习画圆弧。首先我们来看看下面的图形就很容发现a、b两条线都是圆弧。 1 这里我们就来学习如何画a、b圆弧。 先按照图上标识的尺寸画好两个圆。 2 执行画圆弧命令。c-空格键-t-空格键执行命令。此时鼠标手型变成一个小圆圈&#xff0c;找到需要画圆弧连接的地方点…

HTML如何画一段弧,css3如何画圆弧

css3如何画圆弧.circle1 { width: 100px; height: 200px; border: 1px solid black; border-radius: 100% 0 0 100%/50%; border-right: none; } .circle2 { width: 200px; height: 100px; border: 1px solid black; border-radius: 50% 50% 0 0/100% 100% 0 0; border-bottom:…

matlab画指定角度圆弧,CAD中如何根据指定的角度画圆弧

在用CAD绘图的过程中&#xff0c;我们有时候需要根据一个指定的角度画出相应的圆弧&#xff0c;那么怎么操作呢&#xff1f; 下面跟着小编一起来学习吧 方法一&#xff1a; 1、首先&#xff0c;大家打开中望CAD软件 2、利用软件绘图功能的画“圆”功能画出一个半径为R的圆&…

CAD梦想画图中的“绘图工具——圆弧”

CAD在线绘图绘制圆弧&#xff0c;可以指定圆心、端点、起点、半径、角度、弦长和方向值的各种组合形式。绘CAD制圆弧的方法是&#xff0c;选取起点、第二点和端点。 执行方式 &#xff08;1&#xff09;单击菜单栏“绘图→圆弧”。如图&#xff1a; &#xff08;2&#xff09…

画圆弧方法

已知圆心坐标P,圆上一个点坐标A,A-P直线以圆心旋转角度x后,求新的A点坐标P新.x (A.x - P.x) cos((x/180)*PI) P.xP新.y (A.x - P.x) sin((x/180)*PI) P.y <Path x:Name"test" Stroke"AliceBlue" StrokeThickness"4" Width"100"…