LeetCode 53 最大求子序和
阿新 • • 發佈:2018-12-09
我自己寫的就兩種暴力法。
暴力法1 時間複試雜O(n3)
public static int maxSubArray(int[] nums) { int len = nums.length; if (len == 0) { return 0; } int max = Integer.MIN_VALUE; int sum; for (int i = 0; i < len; i++) { for (int j = i; j < len; j++) { sum = 0; for (int k = i; k <=j; k++) { sum += nums[k]; } if (sum > max) { max = sum; } } } return max; }
改進的暴力法 時間複雜度O(n2)
public static int maxSubArray2(int[] nums) { int max = Integer.MIN_VALUE; int sum; for (int i = 0; i < nums.length; i++) {// 子序列左端點 sum = 0; for (int j = i; j < nums.length; j++) {// 子序列右端點 sum += nums[j];// 這裡就相當於每次根據前一次的序列來計算新的序列 if (sum > max) max = sum; } } return max; }