560. Subarray Sum Equals K

Medium
跟之前做的一道two sum data structure design蛮像
We know the key to solve this problem is SUM[i, j]. So if we know SUM[0, i - 1] and SUM[0, j], then we can easily get SUM[i, j]. To achieve this, we just need to go through the array, calculate the current sum and save number of all seen PreSum to a HashMap. Time complexity O(n), Space complexity O(n).

class Solution {
    //< O(N^2)
    public int subarraySum(int[] nums, int k) {
        int count = 0;
        int sum = 0;
        Map<Integer, Integer> preSum = new HashMap<>();
        preSum.put(0, 1);
        //we want to know how many subarray exists such that s[i,j] == k
        //s[i, j] = s[0, j] - s[0, i- 1]
        //k = sum - s[0, i - 1]
        for (int i = 0; i < nums.length; i++){
            sum += nums[i];
            count += preSum.getOrDefault(sum - k, 0);
            preSum.put(sum, preSum.getOrDefault(sum, 0) + 1);
        }
        return count;
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • (宝宝婚变) 天地厚 恩义薄 红颜易改恨天河 一纸诉状 鱼水成陌 惑惑惑 心交恶 百年同船难得舍 断离别 清欲壑 ...
    惠風龢暢阅读 371评论 0 4
  • 从受精卵那一刻开始,这个物质的世界就开始了它的法力,慢慢把你运作成人的样子,有了人的肉体。 那我们的精神世界呢?从...
    Livens绿雨阅读 478评论 2 0
  • 生活中的每个事情,仔细思考,都会耐人寻味;细细品尝,都会所得颇多。生活,对于蹉跎者来说,是磨难,是不幸;对于艺术家...
    某言阅读 231评论 0 0
  • 我是一个网瘾少年 哈 早上妈妈没叫我起床和他一起去店里 我就等妈妈走后 起来吃饭 刷碗 9.30 然后就想玩把...
    帅气的豹阅读 253评论 0 0
  • 我还喜欢你 像月追逐黎明 生生不息 我还喜欢你 像流星划破天际 甘心坠地 我还喜欢你 像叶绿到冬季 不离不弃 我还...
    殒尘阅读 192评论 0 1