LeeCode 560.和为K的子数组

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

子数组是数组中元素的连续非空序列。

示例 1:

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

示例 2:

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

提示:

1 <= nums.length <= 2 * 104
-1000 <= nums[i] <= 1000
-107 <= k <= 107

1.暴力解法

class Solution {public int subarraySum(int[] nums, int k) {int sum = 0;for (int i = 0; i < nums.length; i++) {int sumi = nums[i];if(sumi == k) {sum++;}for (int j = i + 1; j < nums.length; j++) {sumi += nums[j];if(sumi == k) {sum++;}}}return sum;}
}

执行用时分布
1594ms
击败26.39%使用 Java 的用户
消耗内存分布
45.40MB
击败22.08%使用 Java 的用户

2.前缀和

class Solution {public int subarraySum(int[] nums, int k) {// 第一种方法的问题在于太多重复计算,// 换一个思路,如果从第i个数到第j个数,这j-i+1个数组成的子数组之和为k// 也就是数组nums的前j个数之和 减去 数组nums的前i个数之和 等于 k// 所以可以先统计出来 前N个数之和,也就是 《前缀和》,这样就可以大幅度减少计算量// 注意前面加了一个 0,这样便于处理第0位数的情况,看下面例子// 对于 [3,1,2], k == 3 而言计算前缀和后转成了[0, 3, 4, 6]// 就可以发现3-0==3, 6-3==3,就有两组子数组满足条件int[] preSum = new int[nums.length + 1];preSum[0] = 0;for (int i = 0; i < nums.length; i++) {preSum[i+1] = nums[i] + preSum[i];}// 还是硬扫,但采用从后往前遍历,即指定了上面提到的j,往前找一个i,使得preSum[j] - preSum[i] == k,其中j > iint count = 0;for (int j = 1; j < preSum.length; j++) {int target = preSum[j] - k;for (int i = j - 1; i >= 0; i--) {if (preSum[i] == target) {count++;}}}return count;}
}

执行用时分布
1110ms
击败41.83%使用 Java 的用户
消耗内存分布
44.56MB
击败67.42%使用 Java 的用户

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/649418.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

YOLOv8训练自己的数据集,通过LabelImg

记录下labelImg标注数据到YOLOv8训练的过程,其中容易遇到labelImg的坑 数据集处理 首先在mydata下创建4个文件夹 images文件夹下存放着所有的图片&#xff0c;包括训练集和测试集等。后续会根据代码进行划分。 json文件夹里存放的是labelImg标注的所有数据。需要注意的是&…

MySQL笔记-information_schema库中COLUMNS表的一些笔记

mysql建表中可以添加comment&#xff0c;也就是注释&#xff0c;这些注释会写到information_schema库的COLUMNS表中&#xff0c;可以使用如下SQL语句进行查询&#xff1a; SELECT COLUMN_NAME, COLUMN_COMMENT FROM information_schema.COLUMNS WHERE TABLE_SCHEMA your_data…

2024年第四届智能机器人与系统国际会议(ISoIRS 2024) | EI、Scopus双检索

会议简介 Brief Introduction 2024年第四届智能机器人与系统国际会议(ISoIRS 2024) 会议时间&#xff1a;2024年6月14日-16日 召开地点&#xff1a;中国长沙 大会官网&#xff1a;www.isoirs.org ISoIRS 2024将围绕“智能机器人与系统”的最新研究领域展开&#xff0c;为研究人…

将Html页面转换为Wordpress页面

问题&#xff1a;我们经常会从html源码下载网站上获得我们想要的网站内容框架&#xff0c;以及部分诸如联系我们&#xff0c;About 等内页&#xff0c;但是在文章的发布上&#xff0c;则远不如Wordpress简便。而Wordpress尽管有各种模板&#xff0c;但修改又比较麻烦。解决方法…

JDWP 协议及实现

JDWP 的协议细节并通过实际调试中的例子展开揭示 JDWP 的实现机制,JDWP 是 Java Debug Wire Protocol 的缩写,它定义了调试器(debugger)和被调试的 Java 虚拟机(target vm)之间的通信协议。 JDWP 协议介绍 这里首先要说明一下 debugger 和 target vm。Target vm 中运行…

对读取的Excel文件数据进行拆分并发请求发送到后端服务器

首先&#xff0c;我们先回顾一下文件的读取操作&#xff1a; 本地读取Excel文件并进行数据压缩传递到服务器-CSDN博客 第一步&#xff1a;根据以上博客&#xff0c;我们将原先的handleFile方法&#xff0c;改为以下内容&#xff1a; const handleFile async(e) > {conso…

15. GPIO 应用编程

15. GPIO 应用编程 1. 应用层如何操控 GPIO2. GPIO 应用编程之输出3. GPIO 应用编程之输入4. GPIO 应用编程之中断 1. 应用层如何操控 GPIO GPIO 也是通过 sysfs 方式进行操控的&#xff0c;在/sys/class/gpio目录下 gpiochipX: I.MX6UL 有 5 个 GPIO&#xff0c;X 由小到大…

驱动开发-系统移植

一、Linux系统移植概念 需要移植三部分东西&#xff0c;Uboot ,内核 &#xff0c;根文件系统 &#xff08;rootfs&#xff09; &#xff0c;这三个构成了一个完整的Linux系统。 把这三部分学明白&#xff0c;系统移植就懂点了。 二、Uboot uboot就是引导程序下载的一段代…

【测一测】Jmeter知识大挑战!

不定项选择 1、Ramp-up period(seconds)代表在多长时间内把线程全部启动&#xff0c;如果线程数为10&#xff0c;而Ramp-up period设置为15&#xff0c;则每个线程的间隔时间为&#xff08;&#xff09; A、1 B、1.5 C、2 D、102、对于每个HTTP请求&#xff0c;都可以通过&am…

SQL - 数据控制语句

SQL - 数据控制语句 DCL - 数据控制 数据控制语言&#xff1a;Data Control Language。用来授权或回收访问数据库的某种特权&#xff0c;并控制数据库操纵事务发生的时间及效果&#xff0c;能够对数据库进行监视。 比如常见的授权、取消授权、回滚、提交等等操作。 权限管理…

数字图像处理(实践篇)三十 使用OpenCV-Python在图像上创建水印实践

目录 1 方案 2 实践 1 方案 ①导入依赖库 import cv2 import matplotlib.pyplot as plt ②读取输入图片和水印图片 im = cv2.imread(img_path) wm = cv2.imread(watermarkImg_path) ③计算roi

linux下jdb远程调试tomcat源码

jdb远程调试tomcat 在tomcat打开调试设置jvm参数 -Xrunjdwp:transportdt_socket,servery,address9090,suspendy在linux命令行jdb连接9090端口 jdb -attach ip:9090 -sourcepath /softwares/apache-tomcat-7.0.40-src/java设置断点 stop at org.apache.tomcat.util.Introspectio…

如何在云服务上通过docker部署服务?

如何在云服务上通过docker部署服务&#xff1f; 一、在云服务器上安装Docker1、查看云服务器的OS信息2、[安装Docker并使用&#xff08;Linux&#xff09;](https://help.aliyun.com/zh/ecs/use-cases/deploy-and-use-docker-on-alibaba-cloud-linux-2-instances) 二、通过dock…

【一次性解决】CUDA和PyTorch的安装与多版本管理的三种方式

很多人配置环境就是直接安装三件套&#xff0c;而对于版本管理不是很清楚。在开发初期&#xff0c;这样做没什么问题。但是如果服务器多人使用&#xff0c;或者复现代码多&#xff08;pytorch版本和cuda版本是互相依赖的&#xff09;&#xff0c;就需要更进一步的版本管理方法。…

Vue进阶:Vue中的ajax请求

一、Vue中的ajax请求 1.1 解决开发环境 Ajax 跨域问题 总结&#xff1a; 1.1.1 模拟跨域问题 准备好测试的服务器 server1.js const express require(express) const app express()app.use((request,response,next)>{console.log(有人请求服务器1了);// console.log(…

P4769 [NOI2018] 冒泡排序 洛谷黑题题解附源码

[NOI2018] 冒泡排序 题目背景 请注意&#xff0c;题目中存在 n 0 n0 n0 的数据。 题目描述 最近&#xff0c;小 S 对冒泡排序产生了浓厚的兴趣。为了问题简单&#xff0c;小 S 只研究对 1 1 1 到 n n n 的排列的冒泡排序。 下面是对冒泡排序的算法描述。 输入&#x…

韦东山嵌入式Liunx入门笔记一

文章目录 一、嵌入式Linux二、Ubuntu系统2-1 安装软件2-2 Linux文件(1) 文件架构(2)文件属性(3)文件命令(4) 解压、压缩文件(5) 网络命令 2-3 vi编辑器2-4 Ubuntu下包管理 三、配置网卡四、安装后续学习使用的软件4-1 MobaXterm4-2 FileZilla4-3 Source Insight4.04-4 下载BSP4…

Open CASCADE学习|圆柱螺旋线绘制原理探究

1、圆柱螺旋线绘制原理 在OCC中&#xff0c;圆柱面的参数方程为&#xff1a; 设P为&#xff08;x0,y0,z0&#xff09;,则 xx0r*cos(u) yy0r*sin(u) zz0v 但u、v之间有关系时&#xff0c;此方程表达为圆柱螺旋线&#xff0c;u、v之间为线性关系时是等螺距螺旋线&#xff0…

文件上传之秒传功能

秒传是一种文件的传输机制&#xff0c;用于在文件已经存在于目标服务器上时&#xff0c;通过校验文件的唯一标识&#xff0c;实现快速而无需从新上传整个文件&#xff0c;它解决了重复上传相同文件的问题&#xff0c;提高了文件传输的效率和节省了带宽资源。 技术阐述&#xff…

免 费 小程序商城搭建之鸿鹄云商 SAAS云产品概述

【SAAS云平台】打造全行业全渠道全场景的SaaS产品&#xff0c;为店铺经营场景提供一体化解决方案&#xff1b;门店经营区域化、网店经营一体化&#xff0c;本地化、全方位、一站式服务&#xff0c;为多门店提供统一运营解决方案&#xff1b;提供丰富多样的营销玩法覆盖所有经营…