Method 1

class Solution {
public:
    int maxSubArray(vector<int>& nums) {
        int current_sum = nums[0];
        int max_sum = nums[0];

        for(int i = 1; i< nums.size(); i++){
            current_sum = max(nums[i] , current_sum+nums[i]);
            max_sum = max(max_sum , current_sum);
        }

        return max_sum;
    }
};

https://leetcode.com/problems/maximum-subarray/

https://takeuforward.org/data-structure/kadanes-algorithm-maximum-subarray-sum-in-an-array/

Method 2

class Solution {
public:
    int maxSubArray(vector<int>& nums) {
        long long maxi = LONG_MIN;

        long long sum = 0 ;

        for(int i =0 ; i< nums.size() ; i++){

            sum += nums[i];

            if(sum > maxi){
                maxi = sum;
            }

            if(sum < 0 ){
                sum = 0 ;
            }
        }

        return maxi;
    }
};