1. 程式人生 > >LeetCode53最大子序和

LeetCode53最大子序和

int maxSubArray(int* nums, int numsSize) {
    
    if(numsSize == 1) //陣列中只有一個數時返回第一個數
        return nums[0];
    int i = 0;
    int max = nums[0];
    int sum = 0;

    for(i; i < numsSize; i++) //查詢陣列中的最大值,和最大的子串必定包含最大值
    {
        if(max < nums[i])
            max = nums[i];
    }
    if(max <= 0) return max;  //若最大值為負直接返回最大值
    int j =0;
    while(j < numsSize){
        sum += nums[j];
        if(sum >= 0){        //和大於零時判斷是否大於最大值
            if(max < sum)
                max = sum;       
        }
        else                //和小於零時重新求和
            sum = 0;        
        ++j;
    }
    return max;
}