criskgl
8/12/2019 - 11:05 AM

get subarray with minimum sum

import java.util.ArrayList;

public class SubArrayWithMinSum {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[] a = {1, 3, -2, -1,1};
		ArrayList<Integer> result = subarrayWithMinSum(a);
		
		System.out.println(result.toString());
	}
	
	public static ArrayList<Integer> subarrayWithMinSum(int[] A){
		int n = A.length;
		int local_min = 0;
		int global_min = Integer.MAX_VALUE;
		ArrayList<Integer> list = new ArrayList<Integer>();
		for(int i = 0; i < n; i++){
			int current = A[i];
			local_min = Math.min(current, current + local_min);
			if(current < current+local_min){
				list.clear();
			}
			if(local_min < global_min){
				list.add(current);
				global_min = local_min;
			}
		}
		return list;
	}
}