public int maxSubArray(int[] nums) {
int[] ans = new int[2];
int n = nums.length;
int[] dp = new int[n];
int[] from = new int[n];
dp[0] = nums[0];
from[0] = 0;
int res = dp[0];
for (int i = 1; i < n; i++) {
if (dp[i-1] > 0) {
dp[i] = dp[i-1] + nums[i];
from[i] = from[i-1];
}
else {
dp[i] = nums[i];
from[i] = i;
}
if (dp[i] > res) {
res = dp[i];
ans[0] = from[i];
ans[1] = i;
}
}
return res;
}
public int maxSubArray(int[] nums) {
if (nums == null || nums.length == 0) return 0;
//dp[i] means the maximum subarray ending with A[i];
int[] dp = new int[nums.length];
// dp[i] ==> 以i结尾的最大子序列和
dp[0] = nums[0];
int max = nums[0];
for (int i = 1; i < nums.length; i++) {
if (dp[i-1] < 0) dp[i] = nums[i];
else dp[i] = dp[i-1] + nums[i];
max = Math.max(max, dp[i]);
}
return max;
}
public int maxSubArray(int[] nums) {
if (nums == null || nums.length == 0) return 0;
int pre = nums[0];
int max = nums[0];
for (int i = 1; i < nums.length; i++) {
if (pre < 0) pre = nums[i];
else pre += nums[i];
max = Math.max(max, pre);
}
return max;
}
53. Maximum Subarray
最新推荐文章于 2023-10-02 21:14:24 发布