面試題35 連續子陣列的最大和

2021-07-09 06:02:26 字數 696 閱讀 1614

題目:

輸入乙個整型陣列,陣列裡有正數也有負數。陣列中乙個或連續多個整數組成乙個子陣列。求所有子陣列的和的最大值。要求時間複雜度為o(n)。

邊界條件及異常:

空陣列。

思路:考慮陣列2,1,-4,3,4,5,-7

我們用陣列dp來存子陣列包括自己和自己前面元素的最大的和,則有:

dp=不難得出所有子陣列最大的和是12。

時間複雜度:o(n)

空間複雜度:o(n)

哈哈,相信已經看出來為什麼取名為dp了,因為是動態規劃的思想。

我們可以進行優化,只需儲存當前最大值和前乙個元素對應的最大值。

這樣空間複雜度為o(1)。

#include #include #include #include #include #include #include //for hashtable

#include #include #include using namespace std;

int maxsumofsubarray(vectornums)

return max;

}int main()

; vectornums(arr, arr + 9);

cout << maxsumofsubarray(nums) << endl;

return 0;

}

面試題31 連續子陣列的最大和

題目 輸入乙個整形陣列,陣列裡有正數也有負數,陣列中乙個或連續的多個整數組成乙個子陣列。求所有子陣列的和的最大值。要求時間複雜度為o n 例如,輸入陣列 1,2,3,10,4,7,2,5 和最大的子陣列微3,10,4,7,2,因此輸出該子陣列的和18 思路 1,分析陣列規律 初始化和0,第一哥數字1...

面試題27 連續子陣列的最大和

注意 當函式輸入無效時,返回為0,而子陣列的和也有可能為0,為了區分,設定乙個全域性變數標記輸入是否有效。思路用下表說明 bool binvalidinput false 用全域性變數標記是否為無效輸入 求連續子陣列的最大和 int findgreatestsumofsubarray int nar...

面試題31 連續子陣列的最大和

面試題31 連續子陣列的最大和 hz偶爾會拿些專業問題來忽悠那些非計算機專業的同學。今天測試組開完會後,他又發話了 在古老的一維模式識別中,常常需要計算連續子向量的最大和,當向量全為正數的時候,問題很好解決。但是,如果向量中包含負數,是否應該包含某個負數,並期望旁邊的正數會彌補它呢?例如 連續子向量...