劍指offer 連續子陣列的最大和

2021-07-27 08:28:17 字數 1138 閱讀 4875

劍指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個開始,到第...