题目

image.png

思路

代码

  1. public int maxSubArray(int[] nums) {
  2. int len = nums.length;
  3. if (len == 0) return 0;
  4. int[] preSun = new int[len];
  5. preSun[0] = nums[0];
  6. int max = nums[0], min = nums[0];
  7. for (int i = 1; i < len; i++) {
  8. preSun[i] += (preSun[i - 1] + nums[i]);
  9. min = Math.min(min, preSun[i - 1]);
  10. max = Math.max(min < 0 ? preSun[i] - min : preSun[i], max);
  11. }
  12. return max;
  13. }
  14. //官方
  15. public int maxSubArray(int[] nums) {
  16. int pre = 0, maxAns = nums[0];
  17. for (int x : nums) {
  18. pre = Math.max(pre + x, x);
  19. maxAns = Math.max(maxAns, pre);
  20. }
  21. return maxAns;
  22. }