首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【LeetCode每日打卡】560. Subarray Sum Equals K

【LeetCode每日打卡】560. Subarray Sum Equals K

作者头像
韩旭051
发布2020-06-23 10:45:24
发布2020-06-23 10:45:24
4810
举报
文章被收录于专栏:刷题笔记刷题笔记

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

Constraints:

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

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/subarray-sum-equals-k 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

和为K的连续子数组

可以把数组记录为从 头到当前的和, 之后 只要计算两个数组的数之差 就是 连续当前 连续子列的和。

java

用map进行存储,map.containsKey 判断是否存在 适合的值,mp.get 获取适合的数量

数量和即为所求。

代码语言:javascript
复制
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;
    }
}

boolean containsKey(Object key)

检出map集合中有没有包含Key为key的元素,如果有则返回true,否则返回false。

V get(Object key)

根据map集合中元素的Key来获取相应元素的Value

V put(K key, V value)

向map集合中添加Key为key,Value为value的元素,当添加成功时返回null,否则返回value。

就是说Map集合中的Key是不能重复的,这就类似于Set集合中元素不能重复,但是Map集合中的Value是可以重复。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/05/15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 和为K的连续子数组
  • 可以把数组记录为从 头到当前的和, 之后 只要计算两个数组的数之差 就是 连续当前 连续子列的和。
  • java
    • boolean containsKey(Object key)
    • V get(Object key)
    • V put(K key, V value)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档