LeetCode-in-All

560. Subarray Sum Equals K

Medium

Given an array of integers nums and an integer k, return the total number of continuous subarrays whose sum equals to k.

Example 1:

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

Output: 2

Example 2:

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

Output: 2

Constraints:

Solution

class Solution {
    /**
     * @param Integer[] $nums
     * @param Integer $k
     * @return Integer
     */
    public function subarraySum($nums, $k) {
        $tempSum = 0;
        $ret = 0;
        $sumCount = array();
        $sumCount[0] = 1;
        foreach ($nums as $i) {
            $tempSum += $i;
            if (isset($sumCount[$tempSum - $k])) {
                $ret += $sumCount[$tempSum - $k];
            }
            if (isset($sumCount[$tempSum])) {
                $sumCount[$tempSum] = $sumCount[$tempSum] + 1;
            } else {
                $sumCount[$tempSum] = 1;
            }
        }
        return $ret;
    }
}