LeetCode—和为K的子数组(前缀和)

news2025/4/21 14:03:58

题目描述

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

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

示例 1:

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

示例 2:

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

题目解析

这道题的描述很简单,也很好理解,目的就是让我们算出有多少个和为K的连续子数组。

因此最简单的一种方法就是暴力求解,找到所有的子数组,计算和是否为K。

但是,暴力求解虽然简单,但是时间消耗是很大的,时间复杂度是n的平方。所有在数组很大时计算得会很慢。

因此我们可以使用另外一种方式来求解此题,可以思考一下,题目中让求的说连续的子数组和,

请添加图片描述
这个其实可以转化成用前缀和的方式来表示。例如,求第3到5个数的和,就可以转化为前5个数的和减去前2个数的和,两个前缀和相减就可以来表示一个连续子数组的和。

img

借助官方题解中的一张图,在遍历结束后,会得到所有的前缀和及其出现的次数,在不断的遍历中pre-k会不断更新,在将其和前缀和去匹配,如果相等了count就加一。

用这种方法,只需遍历一次数组就可以实现,时间会大大减少。

代码如下:

    public int subarraySum(int[] nums, int k) {
        HashMap<Integer, Integer> map = new HashMap<>();
        map.put(0, 1);
        int pre = 0;
        int count = 0;
        for (int i = 0; i < nums.length; i++) {
            pre += nums[i];
            if (map.containsKey(pre - k)) {
                count += map.get(pre - k);
            }
            map.put(pre, map.getOrDefault(pre, 0) + 1);
        }
        return count;
    }

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

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

相关文章

api授权电商平台对接商品详情页数据指南

API授权电商平台对接商品详情页数据指南主要分析如何通过API接口获取电商平台上商品的详细信息&#xff0c;并指导如何将这些信息集成到应用程序中。接下来将详细探讨这个过程中的关键步骤和技术细节&#xff1a; API接口概述 功能和重要性&#xff1a;API&#xff08;应用程序…

【计算机网络】深入理解TCP协议的三次握手和四次挥手 一、前言

文章目录 前言一、说明2.1图解2.2 三次握手2.3 四次挥手 二、总结 前言 在计算机网络中&#xff0c;TCP协议是一种面向连接、可靠的、基于字节流的传输层通信协议。它的核心特性就是提供了数据的可靠传输&#xff0c;这种可靠性主要体现在连接的建立&#xff08;三次握手&…

Three.js动效(第02辑):炫酷的3D动画效果。

Hi&#xff0c;大家好&#xff0c;大宇数据从本期开始分享three.js的能够实现的动效&#xff0c;每期分享九幅图&#xff0c;这是第二期啦。 一起来看看吧。

智慧财税赋能:乐财业合伙人如何实现行业弯道超车

这是一个充满竞争的时代&#xff0c;财税服务行业也是如此&#xff1a;低端市场只剩下价格的厮杀&#xff0c;中高端市场则蕴藏着无限商机。 与传统代账公司相比&#xff0c;乐财业合伙人通过平台的赋能支持在服务质量、响应速度、客户体验等方面实现质的飞跃&#xff0c;从而…

【数据库】四、多类型数据库管理工具分享

一、简介 DBeaver是一款免费、开源的数据库管理工具&#xff0c;支持多种关系型数据库&#xff0c;如Access、SQLite、MySQL、PostgreSQL、Oracle等。提供图形界面&#xff0c;方便用户查看数据库结构、执行SQL查询和脚本等。支持跨平台操作&#xff0c;并具备丰富的插件和扩展…

【代码随想录】【算法训练营】【第64天】 [卡码117]软件构建 [卡码47]参加科学大会

前言 思路及算法思维&#xff0c;指路 代码随想录。 题目来自 卡码网。 day 64&#xff0c;周三&#xff0c;继续ding~ 题目详情 [卡码117] 软件构建 题目描述 卡码117 软件构建 解题思路 前提&#xff1a; 思路&#xff1a; 重点&#xff1a; 代码实现 C语言 [卡码…

如果我贷款买一套 400W 的房子,我要给银行多送几辆迈巴赫?

作者&#xff1a;一只野生的八哥 买房攻略 2023 年至今&#xff0c;上海房价一跌再跌。俺已经蠢蠢欲动了&#xff0c;磨刀霍霍向"买房"。但是奈何手里钞票不够&#xff0c;只能向天再借 500 年打工赚钱。但是作为倔强的互联网打工人&#xff0c;想知道自己会被银行割…

elementui实现复杂表单的实践

简介 文章主要讲述在vue3项目中使用elementui框架实现复杂表单的方式。表单中涉及动态组件的生成、文件上传和富文本编辑器的使用&#xff0c;只会将在实现过程中较复杂的部分进行分享&#xff0c;然后提供一份完整的前端代码。 表单效果演示 基础信息 spu属性 sku详情 关键…

《梦醒蝶飞:释放Excel函数与公式的力量》 11.1 ISBLANK函数

第11章&#xff1a;信息函数 第一节 11.1 ISBLANK函数 11.1.1 简介 ISBLANK函数是Excel中的一个信息函数&#xff0c;用于检查指定单元格是否为空。该函数返回布尔值&#xff1a;如果单元格为空&#xff0c;返回TRUE&#xff1b;否则返回FALSE。ISBLANK函数在数据清理、条件…

楼道灯微波雷达模块模组,智能感应uA级超低功耗替换红外传感器,飞睿助力绿色照明

随着科技的飞速发展&#xff0c;LED楼道灯早已不仅仅是照亮我们回家路的工具&#xff0c;它们正变得越来越智能、高效和环保。今天&#xff0c;就让我们一起探索LED楼道灯背后的科技——飞睿智能微波雷达模块模组&#xff0c;以及它如何以超低功耗&#xff08;uA级别&#xff0…

thinkphp8框架源码精讲

前言 很开心你能看到这个笔记&#xff0c;相信你对thinkphp是有一定兴趣的&#xff0c;正好大家都是志同道合的人。 thinkphp是我入门学习的第一个框架&#xff0c;经过这么多年了&#xff0c;还没好好的研究它&#xff0c;今年利用了空闲的时间狠狠的深入源码学习了一把&…

将 Vision Transformer 用于医学图像的语义分割

关于ViT的关键点如下&#xff1a; ViT架构基于将图像表示为一组补丁。图像补丁是图像的非重叠块。每个块最初都有一个由该块中的图像像素形成的嵌入向量。Transformer编码器是ViT的主要部分&#xff0c;它根据它们的类别归属来训练补丁之间的相似度。它包含一系列线性、归一化…

什么是RLHF(基于人类反馈的强化学习)?

什么是RLHF&#xff08;基于人类反馈的强化学习&#xff09;&#xff1f; 基于人类反馈的强化学习&#xff08;Reinforcement Learning from Human Feedback, RLHF&#xff09;是一种结合强化学习和人类反馈的技术&#xff0c;用于训练智能体&#xff0c;使其行为更符合人类期…

叉车司机疲劳检测系统解决方案

在日益繁忙的物流仓储和工业制造领域&#xff0c;叉车司机的工作强度逐渐增大&#xff0c;疲劳驾驶的风险也随之提升。因此&#xff0c;我们提出了一套能够准确检测叉车司机疲劳状态的系统&#xff0c;以确保驾驶安全&#xff0c;提高工作效率。 安全监控功能主要透过三颗独立摄…

科普丨企业防泄密有哪些方法?10个防泄密技巧推荐

在信息化高速发展的今天&#xff0c;企业数据安全已成为企业运营的核心议题。随着信息技术的发展和市场竞争的加剧&#xff0c;企业面临的泄密风险越来越大&#xff0c;尤其是商业机密和敏感数据的泄露&#xff0c;会对企业的经济效益、品牌信誉乃至法律地位构成严重威胁。因此…

学习测试8-数据库mysql操作

下载配置mysql 网络博客 使用 在Linux里 1 service mysql start 启动服务 2 在Navicatt 中连接Linux服务器 3 第一步 将所有文件上传到/opt目录下 第二步 chmod 777 deploy-mysql.sh 第三步 ./deploy-mysql.sh4 service mysql status 查看状态是否安装成功 5 重启mys…

分布式训练

一、分布式计算 跟多GPU不同是&#xff1a;数据不是从主存拿的&#xff0c;是在分布式文件系统拿的&#xff0c;有多个工作站&#xff0c;工作站中有多个GPU&#xff0c;通过网络读取数据到GPU中&#xff0c;GPU通过网络接收到来自参数服务器的参数进行运算计算梯度&#xff0c…

【C++深度探索】全面解析多态性机制(一)

hello hello~ &#xff0c;这里是大耳朵土土垚~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f4a5;个人主页&#xff1a;大耳朵土土垚的博客 &#x1…

与沃尔玛进行EDI对接,需要了解什么?如何实现EDI对接呢?

与沃尔玛进行EDI对接前&#xff0c;需要了解什么呢&#xff1f; 首先&#xff0c;需要了解什么是EDI&#xff1f; EDI&#xff08;Electronic Data Interchange&#xff09;即电子数据交换&#xff0c;借助EDI使得企业&#xff08;计算机/应用系统&#xff09;与企业&#xff…

腰肌筋膜炎最好的治疗方法

腰部疼痛是腰肌筋膜炎的主要症状&#xff0c;这种疼痛可能是隐痛、酸痛或肿胀痛&#xff0c;且疼痛可能呈持续性或间歇性。在长时间站立、坐姿、弯腰或腰部受寒着凉后&#xff0c;疼痛通常会加重。疼痛可能会扩散到腰部的其他区域&#xff0c;甚至可能影响到臀部或大腿后侧。疼…