Code Explanation:
1. Function Definition
def max_subarray(nums):
Defines a function named max_subarray that takes a list of integers nums.
2. Initialize Tracking Variables
max_ending = max_so_far = nums[0]
max_ending: Current subarray sum ending at the current position.
max_so_far: The maximum sum found so far across all subarrays.
Both are initialized to the first element of the list, because:
Even if the array has all negative numbers, we want the best single value.
3. Iterate Through the Array (Starting from Second Element)
for x in nums[1:]:
Starts looping from the second element (index 1) to the end.
x is the current number in the array.
4. Update the Current Maximum Ending Here
max_ending = max(x, max_ending + x)
This is the core idea of Kadane’s algorithm.
It decides:
Should we start a new subarray at x?
Or should we extend the current subarray by adding x?
It takes the maximum of:
x → starting fresh
max_ending + x → extending the previous subarray
5. Update the Global Maximum So Far
max_so_far = max(max_so_far, max_ending)
Updates max_so_far to be the larger of:
The current max_so_far
The new max_ending
This ensures we always track the highest subarray sum seen so far.
6. Return the Result
return max_so_far
Returns the maximum subarray sum found.
7. Function Call and Print Result
print(max_subarray([-2,1,-3,4,-1,2,1,-5,4]))
Final Result: 6, which is the sum of subarray [4, -1, 2, 1].
Final Output:
6
.png)

0 Comments:
Post a Comment