每日三题-打家劫舍、打家劫舍III、最佳买卖股票时机含冷冻期

简介: 每日三题-打家劫舍、打家劫舍III、最佳买卖股票时机含冷冻期

打家劫舍


3a7f697ce1294457b6f7dc5e6df9c228.png

解法一

class Solution {
    public int rob(int[] nums) {
        int n = nums.length;
        int dp[] = new int[n+1];
        dp[1] = nums[0];
        for(int i = 2;i <=n;i++){
            dp[i] = Math.max(dp[i-1],(dp[i-2]+nums[i-1]));
        }
        return dp[n];
    }
}


打家劫舍III


537cdd9cd951451998ea293f4c113a11.png

class Solution {
    HashMap<TreeNode,Integer> f = new HashMap<>();
    HashMap<TreeNode,Integer> g = new HashMap<>();
    public int rob(TreeNode root) {
        dfs(root);
        return Math.max(f.getOrDefault(root,0),g.getOrDefault(root,0));
    }
    public void dfs(TreeNode root){
        if(root == null) return; 
        dfs(root.left);
        dfs(root.right);
        f.put(root,root.val+g.getOrDefault(root.left, 0) + g.getOrDefault(root.right, 0));
        g.put(root, Math.max(f.getOrDefault(root.left, 0), g.getOrDefault(root.left, 0)) + Math.max(f.getOrDefault(root.right, 0), g.getOrDefault(root.right, 0)));
    }
}


最佳买卖股票时机含冷冻期


c4cc11ec6f0b4a9fb4ceb451192489c0.png

class Solution {
    public int maxProfit(int[] prices) {
        //dp[i][0] 表示当前持有股票的最大收益
        //dp[i][1] 表示没有股票处于冻结期
        //dp[i][2] 表示没有股票没有处于冷冻期
        int len = prices.length;
        int dp[][] = new int[len][3];
        dp[0][0] = -prices[0];
        for(int i = 1;i < len;i++){
            dp[i][0] = Math.max(dp[i-1][0],dp[i-1][2]-prices[i]);
            dp[i][1] = dp[i-1][0]+prices[i];
            dp[i][2] = Math.max(dp[i-1][1],dp[i-1][2]);
        }
        return Math.max(dp[len-1][1],dp[len-1][2]);
    }
}
class Solution {
    public int maxProfit(int[] prices) {
        int len = prices.length;
        //dp[i][0] 表示这天不持有股票最大收益
        //dp[i][1] 表示这天持有股票最大收益
        int dp[][] = new int[len][2];
        dp[0][1] = -prices[0];
        for(int i = 1;i < len ;i++){
            dp[i][0] = Math.max(dp[i-1][1]+prices[i],dp[i-1][0]);
            dp[i][1] = Math.max(dp[i-1][1],(i<2?0:dp[i-2][0])-prices[i]);
        }
        return dp[len-1][0];
    }
}
相关文章
|
算法
【动态规划刷题 7】 买卖股票的最佳时机含冷冻期&& 买卖股票的最佳时机含手续费
【动态规划刷题 7】 买卖股票的最佳时机含冷冻期&& 买卖股票的最佳时机含手续费
|
6月前
动态规划——买卖股票的最佳时机含冷冻期
动态规划——买卖股票的最佳时机含冷冻期
40 1
|
7月前
|
算法
leetcode代码记录(买卖股票的最佳时机 III
leetcode代码记录(买卖股票的最佳时机 III
40 5
|
7月前
leetcode代码记录(买卖股票的最佳时机 II
leetcode代码记录(买卖股票的最佳时机 II
37 1
|
7月前
|
算法
【力扣】121. 买卖股票的最佳时机、122.买卖股票的最佳时机Ⅱ
【力扣】121. 买卖股票的最佳时机、122.买卖股票的最佳时机Ⅱ
|
算法
dp算法 力扣309最佳买卖股票时机含冷冻期
dp算法 力扣309最佳买卖股票时机含冷冻期
|
7月前
代码随想录 Day43 动态规划11 LeetCode T309 买卖股票的最佳时期含冷冻期 T714买卖股票的最佳时机含手续费
代码随想录 Day43 动态规划11 LeetCode T309 买卖股票的最佳时期含冷冻期 T714买卖股票的最佳时机含手续费
56 0
|
7月前
代码随想录 Day41 动态规划09 LeetCode T121 买卖股票的最佳时机 T122 买卖股票的最佳时机II
代码随想录 Day41 动态规划09 LeetCode T121 买卖股票的最佳时机 T122 买卖股票的最佳时机II
49 0
|
7月前
|
算法
leetcode-309:最佳买卖股票时机含冷冻期
leetcode-309:最佳买卖股票时机含冷冻期
53 0
|
7月前
|
算法
leetcode309最佳买卖股票时机含冷冻期刷题打卡
leetcode309最佳买卖股票时机含冷冻期刷题打卡
37 0