int MaxsubArr( int *a, int n){ int cur=0, maxSum=a[0]; for( int i=0; i<n; i++){ if( crr>=0) cur+=a[i]; else cur = a[i]; if( cur > maxSum) maxSum = cur; } return maxSum; }
cur表示以該元素結尾的子數組的最大值,若上一個元素的最大值小於0,則當前元素的最大值為自己,否則則為當前元素值加上上一個元素的最大值。面試
本文爲《編程之法 面試和算法心得》讀書筆記。算法