題目:
輸入乙個整型陣列,陣列裡有正數也有負數。陣列中乙個或連續多個整數組成乙個子陣列。求所有子陣列的和的最大值。要求時間複雜度為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偶爾會拿些專業問題來忽悠那些非計算機專業的同學。今天測試組開完會後,他又發話了 在古老的一維模式識別中,常常需要計算連續子向量的最大和,當向量全為正數的時候,問題很好解決。但是,如果向量中包含負數,是否應該包含某個負數,並期望旁邊的正數會彌補它呢?例如 連續子向量...