斐讯路由器做网站映射,麻将app软件开发价格,合肥哪家网站公司好,汕头高端网站建设方法动态规划思路#xff1a;
1.先声明一个dp数组来表示在下标为i时手中有无股票的最大利润#xff0c;dp【i】【0】表示为在下标为i时#xff0c;手中没有股票。dp【i】【1】表示为在下标为i时#xff0c;手中有股票。
2.在这题中我们要判断两种情况分别是在下标i时手中有股…动态规划思路
1.先声明一个dp数组来表示在下标为i时手中有无股票的最大利润dp【i】【0】表示为在下标为i时手中没有股票。dp【i】【1】表示为在下标为i时手中有股票。
2.在这题中我们要判断两种情况分别是在下标i时手中有股票的最大利润递推公式dp[i][1]Math.max(dp[i-1][0]-prices[i],dp[i-1][1]); 。另一个为下标i时手中没有股票的最大利润递推公式dp[i][0]Math.max(dp[i-1][0],dp[i-1][1]prices[i])。最后返回dp【length-1】【0】的值不能返回dp【length-1】【1】的值因为手中还有股票没有卖利润没有到最大
class Solution {public int maxProfit(int[] prices) {//定义一个dp数组来表示在下标为i时手中有无股票的最大利润int[][] dpnew int[prices.length][2];//初始化下标为0时的手中有无股票的状态//在下标为0时手中没有股票dp[0][0]0;//在下标为0时手中有股票dp[0][1]-prices[0];//for循环来遍历dp数组for(int i1;iprices.length;i){//递推公式来计算每一个下标下的dp数组值。//dp[i][0]表示在下标为i时手中没有股票dp[i][0]Math.max(dp[i-1][0],dp[i-1][1]prices[i]);//dp[i][1]表示在下标为i时手中有股票dp[i][1]Math.max(dp[i-1][0]-prices[i],dp[i-1][1]);}return dp[prices.length-1][0];}
}