求子陣列的最大和
/*題目:輸入一個整形陣列,陣列裡有正數也有負數,陣列中一個或連續的多個正數,求所有子陣列的和的最大值,要求時間複雜度為O(n)很容易理解,當我們加上一個正數時,和會增加;當我們加上一個負數時,和會減少。如果當前得到的和是個負數,那麼這個和在接下來的累加中應該拋棄並重新清零,不然的話這個負數將會減少接下來的和。基於這樣的思路,我們可以寫出如下程式碼。
程式碼不僅求出了最大和,而且記錄下了起始點和末尾的座標。
例如:1,-2,3,10,-4,7,2,-5最大子陣列和為18,起始點和末尾座標為2,6 */
#include<stdio.h> int SumOfMax(int *array,int length, int* begin, int* end)//利用begin和end存放起始和最後的下標 { int i; //int maxSum=0x80000000;// int maxSum= -(1<<31); int currentSum=0; printf("%d",currentSum); if(array==NULL || length<=0) printf("Invaild parameters"); for(i=0; i<length; i++) { if(currentSum<=0) { currentSum=array[i]; *begin = i; } else { currentSum += array[i]; *end = i-1; } if( currentSum > maxSum ) { maxSum = currentSum; *end = i; } } return maxSum; } int main() { int a[]={1,-2,3,10,-4,7,2,-5}; int length=sizeof(a)/sizeof(int); int first,last; printf("%d\n",SumOfMax(a,length,&first,&last)); printf("%d %d",first,last); }
相關文章
- 求子陣列的最大和問題陣列
- 程式設計師面試題精選(03)-求子陣列的最大和程式設計師面試題陣列
- 連續子陣列的最大和陣列
- 一維子陣列最大和陣列
- Maximum Subarray 連續子陣列最大和陣列
- 【劍指offer】連續子陣列的最大和陣列
- JZ-030-連續子陣列的最大和陣列
- 牛客題霸--連續子陣列的最大和陣列
- 每日一練(22):連續子陣列的最大和陣列
- 劍指 Offer 42.連續子陣列的最大和陣列
- 劍指Offer-連續子陣列中的最大和陣列
- 劍指office--31. 連續子陣列的最大和陣列
- 如何從整數陣列中找到最大和最小數陣列
- 《劍指Offer》- 連續子陣列的最大和或最小和陣列
- 劍指offer-例題 連續子陣列的最大和陣列
- [每日一題] 第十五題:連續子陣列的最大和每日一題陣列
- 程式設計求一維陣列中最大和最小的元素值程式設計陣列
- Google 面試題 | 3個非重複子陣列最大和Go面試題陣列
- JS陣列遍歷和獲取陣列最值JS陣列
- 【演算法拾遺】三種方法求連續子陣列的最大和演算法陣列
- Leetcode 陣列中和為給定值的最長子陣列LeetCode陣列
- 構建最簡單陣列陣列
- 978 最長湍流子陣列陣列
- 845. 陣列中的最長山脈陣列
- 結構體最後的零長度陣列結構體陣列
- 劍指Offer:JZ30-連續子陣列最大和(解題思路+Java程式碼)陣列Java
- PHP獲取陣列最後一個值PHP陣列
- JavaScript刪除陣列最後一個元素JavaScript陣列
- JavaScript獲取陣列最後一個元素JavaScript陣列
- JavaScript 刪除陣列最後一個元素JavaScript陣列
- 陣列1——求一個陣列的最大子陣列陣列
- Javascript - 陣列和陣列的方法JavaScript陣列
- 陣列--移除陣列中指定的元素,不改變原陣列和改變原陣列陣列
- [求解]陣列,分成倆個陣列,陣列值之和的相差最小。陣列
- JavaSE 陣列:一維陣列&二維陣列Java陣列
- 【陣列】977. 有序陣列的平方陣列
- 最長公共子串 二維陣列 Go實現陣列Go
- poj 3349 陣列的hash(最常用、最普通的雜湊表建立)陣列