{}
run-icon
Main.java
// Online Java Compiler // Use this editor to write, compile and run your Java code online import java.util.*; class Main { public static void main(String[] args) { ArrayList<Integer> reconstructedSoln = new ArrayList<Integer>(); int arr[] = {-3,-2,-1}; int dp[] = new int[arr.length]; dp[0] = arr[0]; int overallMaxVal = dp[0]; int maxIdx = 0; for(int i=1; i<arr.length; i++) { dp[i] = Math.max(arr[i]+dp[i-1], arr[i]); if(dp[i] > overallMaxVal) { overallMaxVal = dp[i]; maxIdx = i; } } System.out.println(overallMaxVal); System.out.println(maxIdx); int startVal = overallMaxVal-arr[maxIdx]; reconstructedSoln.add(arr[maxIdx]); int startIdx = maxIdx-1; while(startVal>0 && startIdx>=0) { reconstructedSoln.add(arr[startIdx]); startVal = startVal - arr[startIdx]; startIdx--; } Collections.reverse(reconstructedSoln); System.out.println((reconstructedSoln)); } }
Output