劍指offer:連續子陣列的最大和
提交**:
參與人數:2845 時間限制:1秒 空間限制:32768k
本題知識點:
陣列題目描述
hz偶爾會拿些專業問題來忽悠那些非計算機專業的同學。今天測試組開完會後,他又發話了:在古老的一維模式識別中,常常需要計算連續子向量的最大和,當向量全為正數的時候,問題很好解決。但是,如果向量中包含負數,是否應該包含某個負數,並期望旁邊的正數會彌補它呢?例如:,連續子向量的最大和為8(從第0個開始,到第3個為止)。你會不會被他忽悠住?
分析:
方法1:條件累加(時間複雜度o(n))
用currentsum記錄當前數的和,用maxsum來儲存功能函式findgreatestsumofsubarray整個過程中的最大和,將maxsum初始化為最小的負整數。如果當前和currentsum<0,則將currentsum置為0,以緊跟的那個數為第乙個開始累加,如果currentsum>maxsum,將maxsum置為currentsum,當然若currentsum=0,此時不操作 等價於置為0.
另外,此題中要求輸入為(即輸入向量array的長度為0)時,需要返回0,這點需要注意一下.
方法2:動態規劃
方法1ac**:
[cpp]view plain
copy
#include
#include
using
namespace
std;
class
solution
return
maxsum;
} };
// 以下為測試部分
/* int main()
; // vectorvec={}; 向量直接賦值的方法c++11標準支援,編譯器如果比較舊需要先寫陣列或迭代器,然後以相關元素建立陣列
solution sol;
cout<
return 0;}*/
注: int_min和int_max在c語言limits.h中定義,而float.h 定義了double、float型別數的最大最小值,本地測試需要#include
劍指offer 連續子陣列最大和
題目 對於乙個有正有負的整數陣列,請找出總和最大的連續數列。給定乙個int陣列a和陣列大小n,請返回最大的連續數列的和。1.思路 1 定義兩個變數,乙個儲存最終的最大和,乙個是臨時變數,不能初始化為0,初始化都為陣列第乙個數 防止都是負數,它的和肯定是負數 2 for迴圈依次向後遍歷,如果tmp臨時...
劍指offer 連續子陣列最大和
hz偶爾會拿些專業問題來忽悠那些非計算機專業的同學。今天測試組開完會後,他又發話了 在古老的一維模式識別中,常常需要計算連續子向量的最大和,當向量全為正數的時候,問題很好解決。但是,如果向量中包含負數,是否應該包含某個負數,並期望旁邊的正數會彌補它呢?例如 連續子向量的最大和為8 從第0個開始,到第...
《劍指offer》連續子陣列的最大和
hz偶爾會拿些專業問題來忽悠那些非計算機專業的同學。今天測試組開完會後,他又發話了 在古老的一維模式識別中,常常需要計算連續子向量的最大和,當向量全為正數的時候,問題很好解決。但是,如果向量中包含負數,是否應該包含某個負數,並期望旁邊的正數會彌補它呢?例如 連續子向量的最大和為8 從第0個開始,到第...