题目一:剑指 Offer 42. 连续子数组的最大和
题目描述
思路
动态规划然后求最大值。
代码
class Solution {
public int maxSubArray(int[] nums) {
int [] dp = new int [nums.length];
dp[0] = nums[0];
int max=dp[0];
for(int i=1;i<nums.length;i++)
{
dp[i]=Math.max(dp[i-1]+nums[i],nums[i]);
max = Math.max(dp[i],max);
}
return max;
}
}
题目二 :剑指 Offer 47. 礼物的最大价值
题目描述
思路
二维数组动态规划,从左上角走到右下角,通过比较找最大值。
代码
class Solution {
public int maxValue(int[][] grid) {
int m=grid.length,n=grid[0].length;
for(int i=0;i<m;i++){
for(int j=0;j < n;j++){
if(i == 0 && j == 0) continue;
if(i == 0) grid[i][j] += grid[i][j-1];
else if(j == 0) grid[i][j] += grid[i-1][j];
else grid[i][j] += Math.max(grid[i-1][j],grid[i][j-1]);
}
}
return grid[m-1][n-1];
}
}