# Kadane's Algorithm > For [[max-subarray| Maximum Contiguous Subarray problem]]. [Largest Sum Contiguous Subarray](https://www.geeksforgeeks.org/largest-sum-contiguous-subarray/) ```python # Initialize our variables using the first element. cur_sum = max_sum = nums[0] # Start with the 2nd element since we already used the first one. for num in nums[1:]: # If current_sum is negative, throw it away. Otherwise, keep adding to it. cur_sum = max(num, cur_sum + num) max_sum = max(max_sum, cur_sum) return max_sum ``` - Intuition - As long as the subarray sum is positive, it's still worth keeping. - When it becomes negative, we should throw it away. - But remember to update the max sum obtained so far. What we've learned: - Don't give up easily if you find that `num[i]` is negative. There might be much more positive digits ahead! - However, when you look back, and you find that the `current_sum` is already negative, please do give it up ruthlessly. - But before you throw it away, remember to update `best_sum`, as at the end of the day, this is the best thing you've obtained so far.