leetcode top100(10) 和为 K 的子数组

news/2024/7/23 16:20:15 标签: leetcode, 算法, 职场和发展

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

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

示例 1:

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

示例 2:

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

import java.util.HashMap;
import java.util.Map;

/**
 * 给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的连续子数组的个数 。
 *
 * 子数组是数组中元素的连续非空序列。
 *
 *
 *
 * 示例 1:
 *
 * 输入:nums = [1,1,1], k = 2
 * 输出:2
 * 示例 2:
 *
 * 输入:nums = [1,2,3], k = 3
 * 输出:2
 */
public class Top10 {
    //采用最左前缀法 一个hash表中存入前面数据之和,遍历数据只要hash表中存在当前数据和t - k 那么就有哈希表中对应个数的连续数组和为K

    private  static int getCount(int[] nums,int k){
        Map<Integer,Integer> preSumMap = new HashMap<>();

        int presum = 0 ;
        int count = 0;
        preSumMap.put(0,1);
        for(int num:nums){
            presum = presum + num;
            if(preSumMap.containsKey(presum-k)){
                count = count +preSumMap.get(presum-k);
            }

            preSumMap.put(presum,preSumMap.getOrDefault(presum,0)+1);
        }
        return count ;
    }

    public static void main(String[] args) {
        int[] nums = {1,2,3,4,5,1,2,3,5,4};
        System.out.println(getCount(nums,6));
    }
}


http://www.niftyadmin.cn/n/5026245.html

相关文章

CSS总结第六天

day08-前端基础CSS第六天 今日目标 能够说出 为什么要用定位能够说出 定位的 4 种分类能够说出 4 种定位各自的特点能够说出 为什么常用子绝父相布局能够写出 淘宝轮播图布局能够说出 显示隐藏的 3 种方式以及区别 1. 定位(position) 介绍 1.1 为什么使用定位 我们先来看一个效…

Python 文件和正则表达式

文章目录 Python 文件和正则表达式文件打开文件读取文件直接读取 read()&#xff1a;逐行读取采用 **for** 循环&#xff1a;采用 readlines()&#xff1a; 正则表达式匹配规则re 模块match 方法&#xff1a;search 方法group 方法split 方法 Python 文件和正则表达式 文件 打…

LeetCode每日一题:1222. 可以攻击国王的皇后(2023.9.14 C++)

目录 1222. 可以攻击国王的皇后 题目描述&#xff1a; 实现代码与解析&#xff1a; 模拟 原理思路&#xff1a; 1222. 可以攻击国王的皇后 题目描述&#xff1a; 在一个 8x8 的棋盘上&#xff0c;放置着若干「黑皇后」和一个「白国王」。 给定一个由整数坐标组成的数组 …

【excel密码】excel文件加密方法总结:

想要给Excel文件进行加密&#xff0c;方法有很多&#xff0c;今天分享三种Excel加密方法给大家。 打开密码 设置了打开密码的excel文件&#xff0c;打开文件就会提示输入密码才能打开excel文件&#xff0c;只有输入了正确的密码才能打开并且编辑文件&#xff0c;如果密码错误…

Postman使用_接口请求

文章目录 版本说明注册登录创建工作空间创建Collection、Folder和Request接口请求参数Get请求Post请求 版本说明 我的Postman版本是Windows桌面端Version 10.16.0&#xff0c;最新版下载 。 基于该版本进行调试和说明&#xff0c;如果版本不一致&#xff0c;会有点差异&#…

Boostrap对HTML的表格的设计和优化

目录 01-Bootstrap的默认表格风格02-没有边线-边界的表格03-行与行的背景颜色交替变换(条纹样式)04-给表格加上边框效果05-鼠标移到行上时该行的颜色加深06-把表格的padding值缩减一半,使表格看起来更紧凑07-为表格的行或单元格设置颜色 01-Bootstrap的默认表格风格 Bootstrap…

Ceph入门到精通-进入维保模式设置命令set noout

设置 noout、norecover、norebalance、nobackfill、nodown 和 pause 标志。在具有客户端密钥环的节点上运行以下命令&#xff1a;例如&#xff0c;Ceph Monitor 或 OpenStack 控制器节点&#xff1a; [rootmon ~]# ceph osd set noout [rootmon ~]# ceph osd set norecover [ro…

ES6 特性

一、ES6 1.1 ES6 概念 1.1.1 什么是 ES ES 全称 EcmaScript 是脚本语言的规范JavaScript 是 EcmaScript 的一种实现ES 新特性就是指 JavaScript 的新特性 1.1.2 为什么要使用 ES 语法简单&#xff0c;功能丰富框架开发应用前端开发职位要求 1.1.3 为什么要学习 ES6 ES6 …