Given an input array find all subarrays with given sum K

前端 未结 9 1249
梦如初夏
梦如初夏 2020-12-23 10:03

Given an input array we can find a single sub-array which sums to K (given) in linear time, by keeping track of sum found so far and the start position. If the current sum b

9条回答
  •  长情又很酷
    2020-12-23 10:41

    Try this code this can work for you:

    private static void printSubArrayOfRequiredSum(int[] array, int requiredSum) {
            for (int i = 0; i < array.length; i++) {
                String str = "[ ";
                int sum = 0;
                for (int j = i; j < array.length; j++) {
                    sum = sum + array[j];
                    str = str + array[j] + ", ";
                    if (sum == requiredSum) {
                        System.out.println(" sum : " + sum + " array : " + str
                                + "]");
                        str = "[ ";
                        sum = 0;
                    }
                }
            }
        }
    

    Use this method like :

     int array[] = { 3, 5, 6, 9, 14, 8, 2, 12, 7, 7 };
     printSubArrayOfRequiredSum(array, 14);
    

    Output :

    sum : 14 array : [ 3, 5, 6, ]
    sum : 14 array : [ 14, ]
    sum : 14 array : [ 2, 12, ]
    sum : 14 array : [ 7, 7, ]
    

提交回复
热议问题