求子陣列的最大和 微軟面試100題 第三題

2021-06-26 19:05:18 字數 931 閱讀 1007

題目要求:

輸入乙個整型陣列,陣列裡有整數也有負數。陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有個乙個和。

求所有子陣列的和的最大值。要求時間複雜度為o(n)。

例如:輸入的陣列為1,-2,3,10,-4,7,2,-5,和最大的子陣列為3,10,-4,7,2,因此輸出為該子陣列的和18。

參考資料:劍指offer第31題、程式設計之美2.14.

題目分析:

依次讀入陣列值,採用兩個臨時變數

擴充套件問題:

解答:程式設計之美2.14擴充套件問題,也可見本部落格後序的程式設計之美系列。

max:最大子陣列之和;min:最小子陣列之和;sum:陣列的總和

最後取max和sum-min的大者即為所求。

解答:程式設計之美2.14擴充套件問題,也可見本部落格後序的程式設計之美系列

解答:程式設計之美2.15擴充套件問題,也可見本部落格後序的程式設計之美系列

#include using namespace std;

int maxsum(int *a,int n);

int main(void)

; cout << maxsum(a,8);

return 0;

}int maxsum(int *a,int n)

return maxsum;

}

微軟100題 3 求子陣列的最大和

include using namespace std 3.求子陣列的最大和 題目 輸入乙個整形陣列,陣列裡有正數也有負數。陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。求所有子陣列的和的最大值。要求時間複雜度為o n 例如輸入的陣列為1,2,3,10,4,7,2,5,和最大的子陣...

微軟面試100題之第三題 求子陣列的最大和

int maxsubarray int a,int size else if sum 0 return max 接下來我給出幾個時間複雜度不同的c 演算法,僅供參考。int maxsubsum const vector a return maxsum 可以看到此處用到了c 中的vector類,使用了...

求子陣列最大和

題目 輸入乙個整形陣列,陣列裡有正數也有負數。陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。求所有子陣列的和的最大值。要求時間複雜度為o n 例如輸入的陣列為1,2,3,10,4,7,2,5,和最大的子陣列為3,10,4,7,2,因此輸出為該子陣列的和18。因為是o n 的複雜度,...