【编程题】LeetCode第560题,和为K的子数组

给定一个整数数组和一个整数 k,你需要找到该数组中和为 的连续的子数组的个数。

示例 1 :

输入:nums = [1,1,1], k = 2
输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。
说明 :

数组的长度为 [1, 20,000]。
数组中元素的范围是 [-1000, 1000] ,且整数 k 的范围是 [-1e7, 1e7]。

方法一:暴力法:超出时间限制

var subarraySum = function(nums, k) {
   var count = 0;
    for (var start = 0; start < nums.length; start++) {
        for (var end = start + 1; end <= nums.length; end++) {
            var sum = 0;
            for (var i = start; i < end; i++)
                sum += nums[i];
            if (sum == k)
                count++;
        }
    }
    return count;
};

方法二:

var subarraySum = function(nums, k) {
   var count = 0;
    for (var start = 0; start < nums.length; start++) {
        var sum=0;
        for (var end = start; end < nums.length; end++) {
            sum+=nums[end];
            if (sum == k)
                count++;
        }
    }
    return count;
};

 

你可能感兴趣的:(算法)