Maximum Size Subarray Sum Equals k

来源:互联网 发布:js中函数的定义 编辑:程序博客网 时间:2024/06/04 19:18

这是一道很有意思的题,我们的确要从中找出通用的解法,

注意:

map.put(0, -1);

这个有奇效,不仅仅是

Note the map.put(0, -1). We need to put this entry into the map before, because if the maximal range starts from 0, we need to calculate sum(j) - sum(i - 1). 

public class Solution {    public int maxSubArrayLen(int[] nums, int k) {        if (nums == null || nums.length == 0) {            return 0;        }        Map<Integer, Integer> map = new HashMap<>();        int max = 0;        int sum = 0;        map.put(0, -1);        for(int i = 0; i < nums.length; i++) {            sum = sum + nums[i];            if (!map.containsKey(sum)) {                map.put(sum, i);            }            if (map.containsKey(sum - k)) {                int preIndex = map.get(sum - k);                max = Math.max(max, i - preIndex);            }        }        return max;    }}





0 0
原创粉丝点击