LeetCode Day3【数据结构】存在重复元素,最大子数组和
day1试水做了two sum,day2做了存在重复元素2。今天day3系统做数据结构入门系列,尽量每天两道(原来计划每天一道)。
217 Contains Duplicate存在重复元素
53 Maximum Subarray最大子数组和
代码
public class Solution {
public int maxSubArray(int[] nums) {
int len = nums.length;
int[] dp = new int [len];
dp[0] = nums[0];
for (int i = 1; i < len; i++){
if (dp[i - 1] > 0){
dp[i] = dp[i - 1] + nums[i];
}
else{
dp[i] = nums[i];
}
}
int res = dp[0];
for (int j = 1; j < len; j++) {
res = Math.max(res, dp[j]);
}
return res;
}
}
思路:动态规划
题解
关键:
ifdp[i−1]>0,则dp[i] = dp[i−1]+nums[i],
ifdp[i−1]≤0,则dp[i] = nums[i]
记住最后不能直接输出dp[i],还要和dp[0]作比较后输出最大的。