maximum subarray whose sum equals 0

后端 未结 12 1352
礼貌的吻别
礼貌的吻别 2020-12-04 08:14

An array contains both positive and negative elements, find the maximum subarray whose sum equals 0.

12条回答
  •  攒了一身酷
    2020-12-04 08:50

    This is one the same lines as suggested by Gevorg but I have used a hash map for quick lookup. O(n) complexity used extra space though.

    private static void subArraySumsZero()
    {
        int [] seed = new int[] {1,2,3,4,-9,6,7,-8,1,9};
        int currSum = 0;
        HashMap sumMap = new HashMap();
        for(int i = 0 ; i < seed.length ; i ++)
        {
            currSum += seed[i];
            if(currSum == 0)
            {
                System.out.println("subset : { 0 - " + i + " }");
            }
            else if(sumMap.get(currSum) != null)
            {
                System.out.println("subset : { " 
                                    + (sumMap.get(currSum) + 1) 
                                    + " - " + i + " }");
                sumMap.put(currSum, i);
            }
            else
                sumMap.put(currSum, i);
        }
        System.out.println("HASH MAP HAS: " + sumMap);
    }
    

    The output generated has index of elements (zero based):

    subset : { 1 - 4 }
    subset : { 3 - 7 }
    subset : { 6 - 8 }
    

提交回复
热议问题