Leetcode - 3sum-closest
Leetcode - find-pivot-index

Leetcode - subarray-sum-equals-k

violet posted @ 5 年前 in 算法 with tags 2sum Algorithm Golang 算法 , 418 阅读

https://leetcode.com/problems/subarray-sum-equals-k/

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].

The question is easier for just counting the total number of subarrays. It's a bit like 2 sum. Iterate the array and then sum every item and store in a map. The key of map is current sum and the value is number. Once key sum - k is in the map, then there's a result for the sum equals to k.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
func subarraySum(nums []int, k int) int {
    result := 0
    sum := 0
    preSum := map[int]int{
        0: 1,
    }
     
    for i := 0; i < len(nums); i++{
        sum += nums[i]
        if val, ok := preSum[sum-k]; ok {
            result += val
        }
        preSum[sum]++
    }
    return result
}

登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter