Java計算連續子向量的最大和

2021-08-02 05:54:43 字數 839 閱讀 7662

hz偶爾會拿些專業問題來忽悠那些非計算機專業的同學。今天測試組開完會後,他又發話了:在古老的一維模式識別中,常常需要計算連續子向量的最大和,當向量全為正數的時候,問題很好解決。但是,如果向量中包含負數,是否應該包含某個負數,並期望旁邊的正數會彌補它呢?例如:,連續子向量的最大和為8(從第0個開始,到第3個為止)。你會不會被他忽悠住?(子向量的長度至少是1)

我的一版的想法是,用乙個sum和乙個temp來比較,sum記錄當前的最大和,temp記錄每次相加和。

如果temp>sum,那麼就改變sum的值,這樣sum的值就是連續子向量的最大值。

但是第一版**並沒有完全通過。通過了示範用例,但是有一些用例還是沒有通過:

public class solution 

}return sum;

}}

分析沒有通過的用例:

測試用例:

[1,-2,3,10,-4,7,2,-5]

對應輸出應該為:

18你的輸出為:17

為什麼會出現這個情況呢?

1,-2,3,……

其實前面這個1是應該不要的。這個1和-2的和 -1 就是造成我的結果為17的原因。

因此我覺得要多加乙個判斷: arr[i]>0;arr[i+1]<0,需要判斷這個負數對arr[i]造成的影響到底有沒有抵消arr[i]的正值。如果是負值那麼說明這個正數和負數統統都不能要了。把temp置0,重新開始找。

最後ac的**為

public class solution else if(temp<0)

}return sum;

}}

連續子陣列的最大和(Java)

問題 輸入乙個整型陣列,陣列裡有正數也有負數。陣列中乙個或連續的多個整數組成乙個子陣列。求所有子陣列的和的最大值。要求時間複雜度為o n 例如 輸入的陣列為,和最大的子陣列為,因此輸出為該子陣列的和18。最直觀的思路 乙個長度為n的陣列,總共有n n 1 2 個子陣列 計算出所有子陣列的和,即可得到...

最大子向量和(連續子陣列的最大和)

題目1372 最大子向量和 連續子陣列的最大和 時間限制 1 秒 記憶體限制 32 兆 特殊判題 否 提交 2132 解決 556 題目描述 hz 偶爾會拿些專業問題來忽悠那些非計算機專業的同學。今天 jobdu 測試組開完會後 他又發話了 在古老的一維模式識別中 常常需要計算連續子向量的最大和 當...

最大陣列連續子向量的最大和

最近研究最大陣列,稍微總結一下,以後繼續補充 find the contiguous subarray within an array containing at least one number which has the largest sum.for example,given the arr...