★560. 和为 K 的子数组(自己做出来了)

2023-12-13 15:17:51

560. 和为 K 的子数组

前缀和的知识。
如果要求i~j下标之间的元素和,用前缀和的话,应该是b[j] - b[i-1],i处的值也应该包括。
所以这个题,前缀和数组就要比原数组整体向后平移一个单元格,不然在求0~n的和的时候没法取到-1。

class Solution {
    public int subarraySum(int[] nums, int k) {
        int[] b = new int[nums.length+1]; //前缀和数组
        b[0] = 0;
        int res = 0;

        for(int i=0;i <nums.length; i++) {
            b[i+1] = b[i] + nums[i];
            if(nums[i] == k)
                res ++;
        }

        System.out.println();
        for(int i=1;i<b.length; i++){
            for(int j=i+1; j<b.length;j++) {
                if(b[j]-b[i-1] == k){
                    res ++;
                }         
            }
        }
        return res;
    }
}

文章来源:https://blog.csdn.net/qq_45895217/article/details/134828751
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。