Kadane의 알고리즘

Kadane's Algorithm은 연속 부분배열의 최대 합을 효율적으로 찾는 알고리즘 중 하나입니다.

N개의 정수 배열 Arr[]이 주어집니다. 합이 최대인 연속된 하위 배열(적어도 하나의 숫자 포함)을 찾아 그 합을 반환합니다.

예 1:

Input:
N = 5
Arr[] = {1,2,3,-2,5}
Output:
9
Explanation:
Max subarray sum is 9
of elements (1, 2, 3, -2, 5) which 
is a contiguous subarray.



class Solution{

    // arr: input array
    // n: size of array
    //Function to find the sum of contiguous subarray with maximum sum.
    int maxSubarraySum(int arr[], int n){

        int maxSoFar=0,maxTillHere=0;
        for(int i=0;i<n;i++){
            maxTillHere+=arr[i];
            if(maxTillHere>maxSoFar){
                maxSoFar=maxTillHere;
            }
            if(maxTillHere<0){
                maxTillHere=0;
            }
        }
        return maxSoFar;

    }

}

좋은 웹페이지 즐겨찾기