原题链接在这里:https://leetcode.com/problems/subarray-sum-equals-k/description/

题目:

Given an array of integers and an integer k, you need to find the total number of continuous subarrays whose sum equals to k.

Example 1:

Input:nums = [1,1,1], k = 2
Output: 2

Note:

  1. The length of the array is in range [1, 20,000].
  2. The range of numbers in the array is [-1000, 1000] and the range of the integer k is [-1e7, 1e7].

题解:

计算subarray的和为k的个数.

保存从头到当前值和sum 以及 对应这个和的个数. 若是之前出现了sum-k说明这一段相加就是k. 更新和.

Note: 初始HashMap<Integer, Integer> hm 时需要先把和为0的情况加进去. 最开始什么都没有, 所以hm需要加上<0,1>这个对应关系.

Time Complexity: O(nums.length).

Space: O(nums.length).

AC Java:

 1 class Solution {
 2     public int subarraySum(int[] nums, int k) {
 3         if(nums == null || nums.length == 0){
 4             return 0;
 5         }
 6
 7         HashMap<Integer, Integer> hm = new HashMap<Integer, Integer>();
 8         hm.put(0, 1);
 9         int res = 0;
10         int sum = 0;
11         for(int num : nums){
12             sum += num;
13             if(hm.containsKey(sum - k)){
14                 res += hm.get(sum - k);
15             }
16
17             hm.put(sum, hm.getOrDefault(sum, 0)+1);
18         }
19         return res;
20     }
21 }

类似Two Sum, Continuous Subarray Sum, Subarray Product Less Than K.

转载于:https://www.cnblogs.com/Dylan-Java-NYC/p/7761030.html

LeetCode Subarray Sum Equals K相关推荐

  1. Leetcode 560. Subarray Sum Equals K

    前缀和(prefix sum/cumulative sum) import collectionsclass Solution(object):def subarraySum(self, nums, ...

  2. LeetCode 325. Maximum Size Subarray Sum Equals k

    这一题开始以为是sliding window,后来发现,因为有负数,sum不具有单调性,没有办法用slidng window找出optimal solution. 如果考虑brute force的做法 ...

  3. LeetCode 第201次周赛 1546. Maximum Number of Non-Overlapping Subarrays With Sum Equals Target

    Leetcode 1546. Maximum Number of Non-Overlapping Subarrays With Sum Equals Target 题目描述 思路 周赛代码 优化代码 ...

  4. leetcode 907. Sum of Subarray Minimums | 907. 子数组的最小值之和(单调栈)

    题目 https://leetcode.com/problems/sum-of-subarray-minimums/ 题解 单调栈问题.参考左神算法课:https://ke.qq.com/webcou ...

  5. leetcode 523. Continuous Subarray Sum | 523. 连续的子数组和(同余定理)

    题目 https://leetcode.com/problems/continuous-subarray-sum/ 题解 没有想到 O(n) 的方法,于是直奔答案: 参考1:[宫水三叶]拓展到求方案数 ...

  6. [LintCode] Minimum Size Subarray Sum 最小子数组和的大小

    Given an array of n positive integers and a positive integer s, find the minimal length of a subarra ...

  7. LeetCode 2090. 半径为 k 的子数组平均值(滑窗)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个下标从 0 开始的数组 nums ,数组中有 n 个整数,另给你一个整数 k . 半径为 k 的子数组平均值 是指:nums 中一个以下标 i 为 ...

  8. leetcode523 Continuous Subarray Sum

    思路: 令sum[p]表示p位置的前缀和.如果sum[i] % k == sum[j] % k (j - i > 1),则存在子段(i, j]的和能够整除k. 实现: 1 class Solut ...

  9. LintCode 402: Continuous Subarray Sum

    LintCode 402: Continuous Subarray Sum 题目描述 给定一个整数数组,请找出一个连续子数组,使得该子数组的和最大.输出答案时,请分别返回第一个数字和最后一个数字的下标 ...

最新文章

  1. Linux系统文件名字体不同的颜色都代表什么
  2. OpenCV拼接细节stitching detailed的实例(附完整代码)
  3. 睡前必读 | 如何系统性地学习分布式系统?
  4. linux主机ftp传输文件效率,FTP和TCP的文件传输效率对比测试分析
  5. 南京高中计算机老师,南京市教育局召开中小学教师信息技术应用能力提升工程2.0市级专家组工作会议...
  6. ASoC Codec驱动代码框架图
  7. 1.1 矩阵与线性方程组-矩阵的基本运算
  8. 统计通话次数和时间的软件_通话时间统计app下载-通话时间统计下载v2.3-西西软件下载...
  9. handlersocket原理和性能测试
  10. 如何从0到1进行电商平台订单系统的搭建?
  11. Axure制作倒计时
  12. Android P wakeup 亮屏流程
  13. 微信小程序修改data,页面数据实时更新
  14. windows配置静态路由表
  15. 谷歌是如何以简洁赢取用户的
  16. Android自定义控件:NestedScrolling实现仿魅族flyme6应用市场应用详情弹出式layout
  17. Java画图板界面上的添加
  18. AG256SL100 与EPM240T100 完全PIN TO PIN兼容
  19. windows7快捷键-好玩的
  20. python3.7安装完成pip无法使用

热门文章

  1. spark属性配置的优先级
  2. 【网址收藏】华为荣耀V9(DUK-AL20)刷机包下载
  3. 【github技巧】解决githubusercontent打不开的问题
  4. ansible roles角色(模块化)详解
  5. Scala父类和父特质的执行顺序
  6. Scala声明类及创建类的对象
  7. Scala函数柯里化
  8. Java客户端操作zookeeper:获取/节点的子节点代码示例
  9. Solr的安装步骤及增删改查代码示例
  10. synchronized的可重入怎么实现的