Find max subarray in a list

Run Settings
LanguageJava
Language Version
Run Command
class Main { /* Given an array of integers, both negative and non-negative, find the contiguous subarray with the largest sum and return the sum of that subarray. input = [-2, 1, -3, 4, -1, 2, 1, -5, 4] output = 6 // initialize two variables --> maxSoFar and maxEndHere = 0 // Iterate through integers // for each integer--> update both variables to be max of current integer or the sum of current integer // update maxSoFar --> max of both variables // continue update until iteration of all integers // return the maxSoFar --> contain maximum sub array */ /* Time Complexity: O(n) - Linear time complexity due to iterating through the input array once. Space Complexity: O(1) - Constant space complexity as the function uses a fixed number of additional variables. */ public static int maxSubArray(int[] nums){ int maxSoFar = nums[0]; int maxEndHere = nums[0]; // iterate through integers for(int i=1; i<nums.length; i++){ // iterate from 2ndt element,beacasue variables are asiigned at 1. maxEndHere = Math.max(nums[i], maxEndHere + nums[i]); // (current element, sum of current element) maxSoFar = Math.max(maxSoFar, maxEndHere); // max of current element or sum of current element } return maxSoFar; } public static void main(String[] args) { int[] input = {-2, 1, -3, 4, -1, 2, 1, -5, 4}; int isMaxSumArray = maxSubArray(input); System.out.println(isMaxSumArray); } }
Editor Settings
Theme
Key bindings
Full width
Lines