image.png
    image.png
    解析:方法一:迭代 方法二:DP

    1. class Solution {
    2. public int maxSubArray(int[] nums) {
    3. /* //方法一:迭代
    4. int maxRes = nums[0], currTotal = nums[0];
    5. for (int i = 1; i < nums.length; i++) {
    6. if (currTotal < 0) {
    7. currTotal = 0;
    8. }
    9. currTotal += nums[i];
    10. maxRes = Math.max(maxRes, currTotal);
    11. }
    12. return maxRes;*/
    13. //方法二:DP
    14. int[] dp = new int[nums.length];
    15. dp[0] = nums[0];
    16. for (int i = 1; i < nums.length; i++) {
    17. dp[i] = Math.max(nums[i]+dp[i-1], nums[i]);
    18. }
    19. //return Arrays.stream(dp).max().getAsInt();
    20. return searchMaxArrayValue(dp);
    21. }
    22. int searchMaxArrayValue(int[] array){
    23. int maxValue=array[0];
    24. for (int i = 1; i < array.length; i++) {
    25. if(array[i]>maxValue){
    26. maxValue=array[i];
    27. }
    28. }
    29. return maxValue;
    30. }
    31. }