leetcode 53. Maximum Subarray
一、问题描述
给定一个整数数组nums,找到连续的子数组(包含至少一个数字),它的总和最大并返回其总和。【例如】
输入:[-2,1,-3,4,-1,2,1,-5,4]
输出:6
说明[4,-1,2,1]具有最大的总和= 6。
二、算法实现
/******************************************* Author:tmw date:2018-5-19 *******************************************/ #include <stdio.h> #include <stdlib.h> #define max( a,b ) (a>b?a:b) int maxSubArray(int* nums, int numsSize) { int i,temp_sum; int cur_sum = nums[0]; //(a[i],a[i+1]) -- a[i] int max_sum = INT_MIN; if(numsSize==1) return cur_sum; for( i=1;i<numsSize; i++ ) { temp_sum = cur_sum; //(a[i],a[i+1]) -- a[i] cur_sum = max(nums[i]+cur_sum,nums[i]); //(a[i],a[i+1]) -- max1=max(a[i]+a[i+1],a[i+1]) max_sum = max(max_sum,max(temp_sum,cur_sum));//(a[i],a[i+1]) -- max2=max(a[i],max1)并更新 } return max_sum; }
三、执行结果
accept
梦想还是要有的,万一实现了呢~~~~ヾ(◍°∇°◍)ノ゙~~~