代码随想录训练营第四十九天 | 动态规划
今天是第四十九天,用动态规划的思想去解决之前用贪心算法解决的股票买卖问题
class Solution { public int maxProfit(int[] prices) { int n = prices.length; if(n == 1){ return 0; } int[] dp = new int[n]; dp[0] = 0; int min = prices[0]; for(int i = 1; i<n; i++){ if(prices[i] < min){ min = prices[i]; } dp[i] = Math.max(dp[i-1], prices[i] - min); } return dp[n-1]; } }
看当前利润和当前价格减去之前最小值,这两个值哪个利润最大,哪个就保留在dp[i]中为当前最大利润。
class Solution { public int maxProfit(int[] prices) { int n = prices.length; if(n ==1){ return 0; } int[] dp = new int[n]; dp[0] = 0; for(int i = 1; i<n; i++){ dp[i] = Math.max(dp[i-1], dp[i-1] + prices[i]-prices[i-1]); } return dp[n-1]; } }
和贪心一样的思路,如果昨天的价格比今天低,那就可以卖了,然后如果明天价格比今天还高,那么今天再买。
总体来说今天的题都很简单,都是用dp来实现贪心的思想,加油。

浙公网安备 33010602011771号