LeetCode 53 最大子序和

    科技2024-07-03  71

    题目描述: 方法一(暴力法): 代码(Java实现):

    class Solution { int maxSubArray(int[] nums){ int i = 0; int j = 0; int MaxNums = nums[0]; int pre = 0; for (i = 0; i < nums.length; i++) { pre = 0; for (j = i; j < nums.length; j++) { pre += nums[j]; if (pre > MaxNums) { MaxNums = pre; } } } return MaxNums; } }

    结果: 暴力法果然恐怖如斯… 方法二(动态规划):

    代码(Java实现):

    class Solution { public int maxSubArray(int[] nums) { int pre = 0; int MaxNums = nums[0]; for(int num : nums){ if(pre + num >= num){//如果现在子数组的和加上一个数并且小于这个数,那么此时子数组最大和为num,将num赋给pre,如果大于等于,则加上这个数。 pre = pre + num; }else{ pre = num; } if(MaxNums >= pre){//MaxNums相当于已查找子数组中的最大和,每找到一个新的子数组后,都应比较此时的pre和MaxNums的大小。 continue; }else{ MaxNums = pre; } } return MaxNums; } }

    结果:

    Processed: 0.011, SQL: 8