2017-01-11 85 views
-3

給定一個數組。整數K將數組分成兩個子數組。 diffK定義爲max({A[0], A[1],....A[K]})- max({A[K+1],A[K+2],...A[n-1]})。返回最大絕對值diifK。時間複雜性必須是O(n)和最大空間complexity O(n)兩個子陣列元素之間的最大絕對差異

+1

不要忘了包括你到目前爲止嘗試過的東西...... –

+0

想不到O(n)中的算法。 O(n2)有明顯的解決方案 – zomato

+1

這是字面上的「做我的作業」的問題嗎? – melpomene

回答

2

在通過數組的單向傳遞中構建跟蹤通過給定索引看到的最大值的「助手」數組很容易。 (因此,對於任何給定的Khelper[K] = max({A[0], A[1],....A[K]})。)

然後,在單次通過向後通過陣列,可以跟蹤從向前一個給定的索引(max({A[K+1],A[K+2],...A[n-1]}),其中K是索引)觀察的最大值,並將其與該索引處的上述「助手」數組的值進行比較。跟蹤您在同一索引處的兩個值之間所看到的最大差異,並返回結果。

相關問題