当前位置: 首页 > article >正文

leetcode——和为K的子数组(java)

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

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

示例 1:

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

示例 2:

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

解题方法:(哈希表+前缀和)

1.经过分析此题可以用哈希表与前缀和的方法进行解题,首先其涉及到与k的差值的问题,可以用哈希表来记录。

2.其次由于其是子数组的和,所以我们可以使用前缀和来进行记录。

3.创建哈希表之后,我们需要提前将(0, 1)添加进去,因为当我们的差值为0时,说明当前的元素可以组成长度为1的子数组。

4.开始遍历数组,并且当我们的差值在哈希表中出现时,将其值加入到结果中,最后别忘了更新键值对。

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


http://www.kler.cn/a/512838.html

相关文章:

  • AQS公平锁与非公平锁之源码解析
  • Vue3初学之Element Plus Dialog对话框,Message组件,MessageBox组件
  • 【Day23 LeetCode】贪心算法题
  • 《目标检测数据集下载地址》
  • 基于python+Django+mysql鲜花水果销售商城网站系统设计与实现
  • 【json_object】mysql中json_object函数过长,显示不全
  • 【配置环境】VS Code中JavaScript环境搭建
  • Ubuntu22.04系统切换内核版本
  • 【论文投稿】探秘嵌入式硬件设计:从原理到代码实战
  • 计算机视觉模型的未来:视觉语言模型
  • java快速导出word文档
  • 小结:OSPF协议的工作原理
  • Linux探秘坊-------3.开发工具详解(2)
  • Spring Event和MQ的区别和使用场景
  • Java JDK17 API 离线文档下载
  • 【深度学习项目】语义分割-DeepLab网络(DeepLabV3介绍、基于Pytorch实现DeepLabV3网络)
  • ubuntu下,模仿安装vllm,仅记录
  • android如何将字符串\u83b7\u53d6\u6210\u529f转换成中文
  • Mac安装配置使用nginx的一系列问题
  • 一文大白话讲清楚webpack基本使用——3——图像相关loader的配置和使用
  • 摘录人工智能面试笔试题汇总
  • 文档解析:PDF里的复杂表格、少线表格如何还原?
  • 对人型机器人的研究和展望
  • 提升前端性能的JavaScript技巧:让你的网站飞一般的流畅
  • 【C++指南】类和对象(九):内部类
  • 【JAVA】最新jdk23下载安装