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

Leetcode - subarray-sum-equals-k

violet posted @ Feb 26, 2020 04:43:46 AM in 算法 with tags 2sum Algorithm Golang 算法 , 298 阅读

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.

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