共計 503 個字符,預計需要花費 2 分鐘才能閱讀完成。
要求一個數組的連續子數組的最大和,可以使用動態規劃的方法。
假設數組為 nums,定義一個變量 sum 來表示當前連續子數組的和,初始化為 0。再定義一個變量 maxSum 來表示最大和,初始化為數組中第一個元素。
然后遍歷數組,對于數組中的每一個元素 num:
- 如果 sum 大于等于 0,說明前面的連續子數組的和對后面的子數組的和是有貢獻的,因此將 num 加到 sum 中,并更新 maxSum 的值。
- 如果 sum 小于 0,說明前面的連續子數組的和對后面的子數組的和沒有貢獻,因此將 sum 更新為 num。
- 比較 sum 和 maxSum 的值,將較大的值賦給 maxSum。
最后,返回 maxSum 即為連續子數組的最大和。
以下是 Java 代碼實現:
public int maxSubArray(int[] nums) {int sum = 0;
int maxSum = nums[0];
for (int num : nums) {if (sum >= 0) {sum += num;} else {sum = num;}
maxSum = Math.max(maxSum, sum);
}
return maxSum;
}
使用該方法,可以在時間復雜度為 O(n) 的情況下求得連續子數組的最大和。
丸趣 TV 網 – 提供最優質的資源集合!
正文完