一:题目地址

题目地址

二:解题思路

动态规划

三:代码

Java版本

  1. public int maxSubArray(int[] nums) {
  2. int res = nums[0];
  3. int sum = 0;
  4. for (int num : nums) {
  5. // 如果 sum > 0,则说明 sum 对结果有增益效果,则 sum 保留并加上当前遍历数字
  6. if (sum > 0) {
  7. sum = sum + num;
  8. } else {
  9. //sum <= 0,则说明 sum 对结果无增益效果,需要舍弃,则 sum 直接更新为当前遍历数字
  10. sum = num;
  11. }
  12. res = Math.max(res, sum);
  13. }
  14. return res;
  15. }

Go版本

  1. func maxSubArray(nums []int) int {
  2. result := nums[0]
  3. sum := 0
  4. for _, num := range nums {
  5. if sum > 0 {
  6. sum = sum + num
  7. } else {
  8. sum = num
  9. }
  10. if sum > result {
  11. result = sum
  12. }
  13. }
  14. return result
  15. }