【力扣 Hot100 | 第八天】4.23(和为K的子数组)

在这里插入图片描述

1.和为K的子数组

1.1题目

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

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

  • 示例一:
输入:nums = [1,1,1], k = 2
输出:2
  • 示例二:
输入:nums = [1,2,3], k = 3
输出:2

1.2解法:前缀和+哈希

1.2.1解法思路

  • 核心思想:
    • 使用前缀和的概念:对于数组中的任意连续子数组,可以通过计算前缀和来快速得到该子数组的和。
    • 维护一个HashMap,其中键表示前缀和,值表示该前缀和出现的次数。
    • 在遍历数组过程中,不断更新前缀和,并计算当前前缀和与目标值k的差值,然后查看HashMap中是否存在该差值,若存在,则表示存在和为k的子数组。
  • 代码解释:
    • count:用于记录和为k的子数组的数量。
    • pre:用于记录当前的前缀和。
    • mp:HashMap,用于存储前缀和及其出现的次数。
    • 遍历数组nums,对于每个元素:
      • 更新前缀和pre,并计算当前前缀和与目标值k的差值。
      • 若HashMap中存在该差值,则将该差值对应的出现次数累加到count中。
      • 更新HashMap中当前前缀和的出现次数。
    • 最终返回count,即和为k的子数组的数量。
  • 举例如下:

image-20240423090057786

1.2.2代码实现

	public int subarraySum(int[] nums, int k) {int pre=0;      //前缀和Map<Integer,Integer> map=new HashMap<>();   //存放key为前缀和,value为该前缀和出现的情况map.put(0,1);   //前缀和为0的情况有1种,即空数组int count=0;    //和为k的子数组的总数量for(int i=0;i<nums.length;i++){pre+=nums[i];if(map.containsKey(pre-k)){//count 加上 map包含pre与k的差值()count+=map.get(pre-k);}map.put(pre,map.getOrDefault(pre,0)+1);}return count;}

在这里插入图片描述

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

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

相关文章

汇编语言作业(三)

目录 一、实验目的 二、实验内容 三、实验步骤以及结果 1、阅读第4页ppt 第一个汇编程序 ex1.asm 并编写编译执行成功后&#xff0c;要求改写&#xff0c;使其输出字符ABC&#xff0c;如下图所示。 &#xff08;1&#xff09;编译产生目标文件 &#xff08;2&#xff09;…

虚拟现实(VR)的应用场景

虚拟现实&#xff08;VR&#xff09;技术创建和体验三维虚拟世界的计算机仿真技术。用户通过佩戴VR头显等设备&#xff0c;可以完全沉浸在虚拟世界中&#xff0c;并与虚拟世界中的物体进行交互。VR技术具有广泛的应用前景&#xff0c;可以应用于各行各业。以下是一些VR的应用场…

免费开源线上社交交友婚恋系统平台 可打包小程序 支持二开 源码交付!

婚姻是人类社会中最重要的关系之一&#xff0c;它对个人和家庭都有着深远的影响。然而&#xff0c;在现代社会的快节奏生活中&#xff0c;找到真爱变得越来越困难。在这个时候&#xff0c;婚恋产品应运而生&#xff0c;为人们提供了寻找真爱的新途径。 1.拓宽人际交流圈子 现代…

倾斜摄影三维模型数据在立体裁剪应用分析

倾斜摄影三维模型数据在立体裁剪应用分析 立体裁剪是一种将三维模型应用于摄影中的技术&#xff0c;可以在摄影过程中将虚拟的三维模型与现实场景进行合成&#xff0c;从而实现逼真的视觉效果。倾斜摄影是一种通过无人机或其他飞行器进行航拍的技术&#xff0c;可以获取到大范围…

PLC无线通讯技术在汽车喷涂车间机械手臂上的应用

一、项目背景 在汽车生产装配工艺中&#xff0c;机械臂目前已经广泛地应用于装配、搬运等工业生产中&#xff0c;在机械臂系列产品中&#xff0c;汽车喷漆自动控制喷涂机械装置以其独特的优势&#xff0c;能够根据油漆喷涂量的大小&#xff0c;严格控制喷嘴与喷漆面之间距离等…

《Vid2Seq》论文笔记

原文链接 [2302.14115] Vid2Seq: Large-Scale Pretraining of a Visual Language Model for Dense Video Captioning (arxiv.org) 原文笔记 What&#xff1a; 《Vid2Seq: Large-Scale Pretraining of a Visual Language Model for Dense Video Captioning》 作者提出一种多…

深度学习从入门到精通—Transformer

1.绪论介绍 1.1 传统的RNN网络 传统的RNN&#xff08;递归神经网络&#xff09;主要存在以下几个问题&#xff1a; 梯度消失和梯度爆炸&#xff1a;这是RNN最主要的问题。由于序列的长距离依赖&#xff0c;当错误通过层传播时&#xff0c;梯度可以变得非常小&#xff08;消失…

力扣数据库题库学习(4.23日)

610. 判断三角形 问题链接 解题思路 题目要求&#xff1a;对每三个线段报告它们是否可以形成一个三角形。以 任意顺序 返回结果表。 对于三个线段能否组成三角形的判定&#xff1a;任意两边之和大于第三边&#xff0c;对于这个表内的记录&#xff0c;要求就是&#xff08;x…

Python --- 新手小白自己动手安装Anaconda+Jupyter Notebook全记录(Windows平台)

新手小白自己动手安装AnacondaJupyter Notebook全记录 这两天在家学Pythonmathine learning&#xff0c;在我刚刚入手python的时候&#xff0c;我写了一篇新手的入手文章&#xff0c;是基于Vs code编译器的入手指南&#xff0c;里面包括如何安装python&#xff0c;以及如何在Vs…

【AI开发:音频】一、GPT-SoVITS整合工具包的部署问题解决(GPU版)

前言 目前GPT-SoVITS的合成效果比较不错&#xff0c;相比较其他厂商的产品要规整的多。众多厂家中也是国内使用最多的一款了&#xff0c;并且这个整合包里携带了&#xff0c;除背景音、切割、训练、微调、合成、低成本合成等一些列完整的工具&#xff0c;也可以作为API进行使用…

云盘怎么选最好!

选择云盘时&#xff0c;您应该考虑以下几个关键因素来确保选中最适合您需求的服务&#xff1a; 速度&#xff1a;选择云盘时&#xff0c;传输速度是一个重要的考量点。您应该选择一个即使不使用会员服务也能提供较快上传和下载速度的云盘服务。 存储空间&#xff1a;不同的云盘…

跳跃游戏 II (贪心, 动态规划)

题目描述(力扣45题) : 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说&#xff0c;如果你在 nums[i] 处&#xff0c;你可以跳转到任意 nums[i j] 处: 0 < j < nums[i] i j < n 返回到…