find subarray with given sum
import java.sql.Array; import java.util.ArrayList; import java.util.Arrays; public class FindSubArr { public static void main(String[] args) { int [] arr = {0,1,2,3,4,5,6,9,2,1,1,1,10,2,2,2}; int s = 6 ; int [] sub = findLongestSubArray( arr,s); System.out.println("longest SubArray Range ==> "+Arrays.toString(sub)); } public static int[] findLongestSubArray(int [] arr, int s){ int[] result = new int[]{-1}; int sum=0,left=0,right=0; while(right < arr.length){ sum += arr[right]; while(left < right && sum > s){ sum -= arr[left++]; } if(sum == s && (result.length == 1 || result[1] - result[0] < right - left)){ result = new int[]{left + 1, right +1}; } right++; } return result; } }