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

2021-10-22 13:14:44 字數 1189 閱讀 4406

題目:給乙個陣列,讓求連續陣列元素的最大和。

public int maxsumofsubarray (int arr)

思路

連續子陣列的最大和動態規劃 dp[i]

dp[i]表示以arr[i]結尾的連續子陣列的最大和。arr[i]必須加上,就不判斷arr[i]是正還是負

dp[i]等於arr[i]加上以上乙個元素為結尾的最大和dp[i-1],但是需要判斷dp[i-1]的正負,如果是正的則加上,負的就不加,加0。

時間複雜度為o(n),空間複雜度為o(1),所以只能在arr上修改,不能建立新陣列dp。

動態規劃不建立dp,省o(n)空間。都不修改原arr只用中間變數來儲存中間結果

新(不修改arr陣列,只用中間變數儲存中間結果):

/*

動態規劃,不用建立dp省空間,而且不用修改原陣列arr。

只用幾個中間變數儲存中間的值。

*/public

int maxsumofsubarray2 (

int[

] arr)

return maxsum;

}

舊(修改arr陣列):

/*

求子陣列的最大和 動態規劃 dp[i]

dp[i]表示以arr[i]元素結尾的子陣列的最大和。

arr[i]必須加上,所以不判斷arr[i]的正負

dp[i]等於arr[i]加上dp[i-1],也就是之前元素和的最大值

所以判斷dp[i-1]的正負,正的話就加上,負的話就不加,加0

時間複雜度為o(n),空間複雜度為o(1),所以只能在arr上修改

*/public

int maxsumofsubarray (

int[

] arr)

return maxsum;

}

陣列3 連續子陣列的最大和

題目 找到陣列1 2 3 10 4 7 2 5中的最大和 思路 1 如果前面的和為負值,則加上會使得sum 0,因此要從當前開始重新加 2 動態規劃方法 遞迴 設sum i 為前i個元素中,包含第i個元素且和最大的連續子陣列,result 為已找到的子陣列中和最大的。對第i 1個元素有兩種選擇 做為...

27 連續子陣列的最大和

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

30 連續子陣列的最大和

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