数组中累加和为k的最大子数组的长度

Posted 起个po名真费劲

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数组中累加和为k的最大子数组的长度相关的知识,希望对你有一定的参考价值。

package com.hzins.suanfa;

import java.util.HashMap;

public class demo {
    /**
     * 数组中累加和为k的最大子数组的长度
     * @param arr
     * @param k
     * @return
     */
    public static int maxLengh(int[] arr,int k){
        if(arr == null || arr.length == 0){
            return 0;
        }
        HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
        map.put(0, -1);
        int len = -1;
        int sum = 0;
        for(int i=0 ;i < arr.length;i++){
            sum += arr[i];
            if(map.containsKey(sum - k)){
                len = Math.max(i - map.get(sum - k), len);
            }
            if(map.containsKey(sum)){
                map.put(sum, i);
            }
        }
        return len;
    }
}

 

以上是关于数组中累加和为k的最大子数组的长度的主要内容,如果未能解决你的问题,请参考以下文章

算法总结之 未排序正数数组中累加和为给定值的最长子数组长度

未排序数组中累加和为给定值的最长子数组长度

读书笔记之《程序员代码面试指南(数组和矩阵问题)》

一天一道算法题---未排序数组中累加和为给定值的最长子数组

[算法]最长子数组问题

Leetcode——长度最小的子数组 / 最短无序连续子数组 / 和为k的连续子数组