LeetCode560.和为k的子数组

news2024/12/28 9:23:51

 这道题我用的是暴力法,当然也是不断的提交不断发现问题改出来的,比如我之前是算到和大于目标值就break,其实不行因为后面还可以有负数,我把break删了。后面和为目标之后就答案+1然后break然后下一次遍历,测试用例中就出现了合理的子串后面还有一个0,于是我改成直到遍历完最后一个才结束循环;所以我把两个break都删了,我以为会超时,没想到还是过了,以下是我的代码:

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

就是最简单的暴力法,用i,j两个指针作为子串的起点和终点,然后把子串的所有数的和加起来,如何等于k,ans++。这里就需要注意我前面提到的无论sum=k还是sum>k都不能break,要遍历到最后一个数自动结束,外层循环每次sum归0。

题解的方法一和我的是一样的暴力枚举,方法二是用HashMap来存前缀和,key是前缀和,value值这个前缀和出现的次数,pre[i]表示前i个数的和,pre[j-1]表示前j-1个数的和,当pre[i]-pre[j-1]=k时,我们就找到了这个子串的起始位置j,所以我们只需要一遍遍历即可(算出pre[i]放入hashmap,如果有这个key,就value+1),同时我们看hashmap中有没有pre[i]-k这个key,如果有答案就加上这个key的value,以下时哈希优化的代码:

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

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

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

相关文章

Web服务器端应用开发

一、登录验证器 1.1相关概念 登录验证器是一种用于提高帐户安全性的应用或设备&#xff0c;它可以在你输入用户名和密码后&#xff0c;生成或接收一个一次性的验证码或通知&#xff0c;以进行第二次身份验证。这样&#xff0c;即使你的密码被泄露或破解&#xff0c;其他人也无…

大模型是什么?泰迪大模型能够解决企业哪些痛点?

什么是大模型&#xff1f; 大模型是指模型具有庞大的参数规模和复杂程度的机器学习模型。在深度学习领域&#xff0c;大模型通常是指具有数百万到数十亿参数的神经网络模型。这些模型需要大量的计算资源和存储空间来训练和存储&#xff0c;并且往往需要进行分布式计算和特殊…

Distuptor高性能的无锁框架

目录 Distuptor介绍初识Distuptor数据结构等待策略 Distuptor性能预分配内存使用cpu-cache数据结构 Distuptor使用Distuptor配置步骤单/多生产者策略 Distuptor介绍 初识Distuptor 它是一种高性能的无锁框架&#xff0c;适用于高并发业务场景&#xff0c;其实内部也就是一个生…

Error running ‘Tomcat 8.5.29‘ Address localhost:1099 is already in use

一、Error running ‘Tomcat 8.5.29’ Address localhost:1099 is already in use 原因&#xff1a;端口1099被占用了。 二、解决 2.1 解决方法一-结束该端口1099占用 //1-查看端口占用&#xff0c;根据端口号1099&#xff0c;获取PID(进程ID) netstat -ano | findstr "…

探索未来世界,解密区块链奥秘!

你是否曾好奇&#xff0c;区块链是如何影响着我们的生活与未来&#xff1f;想要轻松了解这个引领着技术革命的概念吗&#xff1f;那么这本令人着迷的新书《区块链导论》绝对值得你拥有&#xff01; 内容丰富多彩&#xff0c;让你轻松掌握&#xff1a; **1章&#xff1a;区块链…

断路器灭弧室真空度试验

试验目的 真空开关的绝缘和灭弧介质是真空&#xff0c;真空灭弧室成品出厂时灭弧室内压强一般要求在10-5Pa以上。随着存放和运行时间的增加&#xff0c;灭弧室内的压强会逐渐增加&#xff0c;使灭弧室最终失效。 真空灭弧室内压强升高的原因:一方面是由于机械损坏导致波纹管破…

【高危】Kubernetes Windows节点kubernetes-csi-proxy提权漏洞 (CVE-2023-3893)

zhi.oscs1024.com​​​​​ 漏洞类型OS命令注入发现时间2023-08-24漏洞等级高危MPS编号MPS-t6rg-974fCVE编号CVE-2023-3893漏洞影响广度小 漏洞危害 OSCS 描述Kubernetes是开源的容器管理平台&#xff0c;kubernetes-csi-proxy是用于Windows中的CSI&#xff08;容器存储接口&…

搭建HAProxy + Keepalived高可用

安装 在四台虚拟机上&#xff0c;我们以如下方式搭建集群&#xff1a; 192.168.115.3 haproxykeepalived 192.168.115.4haproxykeepalived 192.168.115.5 nginx 192.168.115.6 nginx 在192.168.115.3 和192.168.115.4 上安装haproxy和keepalived&#xff08;haproxy编译安装…

C++ set和map的基本使用

set和map介绍 set和map是C STL中的关联式容器&#xff0c;关联式容器是容器里面存储的是<key, value>结构的 键值对&#xff0c;在数据检索时比序列式容器效率更高 键值对&#xff1a; 用来表示具有一一对应关系的一种结构&#xff0c;该结构中一般只包含两个成员变量ke…

【Qt专栏】实现单例程序,禁止程序多开的几种方式

目录 一&#xff0c;简要介绍 二&#xff0c;实现示例&#xff08;Windows&#xff09; 1.使用系统级别的互斥机制 2.通过共享内存&#xff08;进程间通信-IPC&#xff09; 3.使用命名互斥锁&#xff08;不推荐&#xff09; 4.使用文件锁 5.通过网络端口检测 一&#xf…

visual studio 2022.NET Core 3.1 未显示在目标框架下拉列表中

问题描述 在Visual Studio 2022我已经安装了 .NET core 3.1 并验证可以运行 .NET core 3.1 应用程序&#xff0c;但当创建一个新项目时&#xff0c;目标框架的下拉列表只允许 .NET 6.0和7.0。而我在之前用的 Visual Studio 2019&#xff0c;可以正确地添加 .NET 核心项目。 …

Dev-C++ 下载和安装

TOC 1. 下载 Dev-C 访问 sourceforge 网站&#xff0c;然后单击 Download&#xff0c; 2. 安装 Dev-C 双击下载的安装文件进行安装。 3. 在线环境 https://cpp.sh/ 完结&#xff01;

IDEA中GIT相关操作

文章目录 IDEA中GIT相关操作IDEA TAG 提交查看某个tag版本代码、根据某个tag创建分支将分支代码合并到主分支 IDEA中GIT相关操作 IDEA TAG 提交 1.创建tag 右键项目&#xff0c;然后按照 Git -> Repository -> Tag… 创建tag。 或 顶部菜单栏 按照 VCS -> Git->…

27- v-model 原理 组件应用

v-model 原理 原理: V-model本质上是一个语法糖。例如应用在输入框上&#xff0c;就是 value属性 和 input事件 的合写 作用: 提供数据的双向绑定 (1) 数据变,视图跟着变 : value (2) 试图变,数据跟着变: input 注意: $event 用于在模板中, 获取事件的形参 <template>…

YOLOv5算法改进(5)— 添加ECA注意力机制

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。ECA注意力机制是一种用于图像处理中的注意力机制&#xff0c;是在通道注意力机制的基础上做了进一步的改进。通道注意力机制主要是通过提取权重&#xff0c;作用在原特征图的通道维度上&#xff0c;而ECA注意力机制则使用了…

人力资源小程序的设计方案与实现

随着互联网的发展&#xff0c;人才招聘已经成为许多企业的一项重要任务。为了提高招聘效率和便利求职者&#xff0c;许多企业开始采用小程序作为招聘平台。本文将为大家介绍一个搭建本地人才招聘网小程序的实用指南。 首先&#xff0c;我们需要登录【乔拓云】制作平台&#xff…

信创国产系统麒麟arm架构中nginx安装过程

前言 在事业单位或国企&#xff0c;信创项目在步步推进&#xff0c;下面将在国产系统通信arm架构中nginx的安装过程记录分享出来&#xff0c;希望帮助到有需要的小伙伴。 1、nginx下载 1.1、在线下载 进入指定目录&#xff0c;如/usr/local&#xff0c;执行如下命令&#x…

DataFrame.plot函数详解(二)

DataFrame.plot函数详解&#xff08;二&#xff09; 1. Line 1.1主要参数 import matplotlib.pyplot as plt import pandas as pd import numpy as npdf pd.Series(abs(np.random.randn(10)), index pd.date_range(2020-01-01, periods 10)) df.plot.line(style :,marker…

【51单片机】EEPROM-IIC实验(按键控制数码管)

目录 &#x1f381;I2C总线 ​编辑 &#x1f381;代码 &#x1f3f3;️‍&#x1f308;main.c &#x1f3f3;️‍&#x1f308;i2.c &#x1f386;代码分析 &#x1f381;I2C总线 I2C总线是Philips公司在八十年代初推出的一种串行、半双工的总线&#xff0c;主要用于近距…