leetcode 打家劫舍 总结

198

不能相邻两间屋

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

作者:LeetCode-Solution
链接:https://leetcode.cn/problems/house-robber/solution/da-jia-jie-she-by-leetcode-solution/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
class Solution {
   
    public int rob(int[] nums) {
   
        if (nums == null || nums.length == 0) {
   
            return 0;
        }
        int length = nums.length;
        if (length == 1) {
   
            return nums[0];
        }
        int first = nums[0], second = Math.max(nums[0], nums[1]);
        for (int i = 2; i < length; i++) {
   
            int temp = second;
            second = Math.max(first + nums[i], second);
            first = temp;
        }
        return second;
    }
}

作者:LeetCode-Solution
链接:https://leetcode.cn/problems/house-robber/solution/da-jia-jie-she-by-leetcode-solution/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

213

房子是一圈

class Solution {
   
    public int rob(int[] nums) {
   
        int length = nums.length;
        if (length == 1) {
   
            return nums[0];
        } else if (length == 2) {
   
            return Math.max(nums[0], nums[1]);
        }
        return Math.max(robRange(nums, 0, length - 2), robRange(nums, 1, length - 1));
    }

    public int robRange(int[] nums, int start, int end) {
   
        int first = nums[start], second = Math.max(nums[start], nums[start + 1]);
        for (int i = start + 2; i <= end; i++) {
   
            int temp = second;
            second = Math.max(first + nums[i], second);
            first = temp;
        }
        return second;
    }
}

作者:LeetCode-Solution
链接:https://leetcode.cn/problems/house-robber-ii/solution/da-jia-jie-she-ii-by-leetcode-solution-bwja/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

337

房子成树状
树形DP分析清楚某一个节点和它儿子之间的关系(分析清楚某一个家庭的关系),递归做就可以了

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
   
public:
    int rob(TreeNode* root) {
   
        auto f = dfs(root);
        return max(f[0], f[1]);
    }

    vector<int> dfs(TreeNode* u) {
   
        if (!u) return {
   0, 0};
        auto x = dfs(u->left), y = dfs(u->right);
        return {
   max(x[0], x[1]) + max(y[0], y[1]), x[0] + y[0] + u->val};
    }
};

作者:yxc
链接:https://www.acwing.com/activity/content/code/content/481425/
来源:AcWing
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

2560

看到「最大化最小值」或者「最小化最大值」就要想到二分答案,这是一个固定的套路。

class Solution {
   
    //用DP判断当前二分查找值是否有效
    public int minCapability(int[] nums, int k) {
   
        int left = 0, right = (int) 1e9;
        while (left <= right) {
   
            int mid = (left + right) >>> 1;
            int f0 = 0, f1 = 0;
            for (int x : nums)
                if (x > mid) f0 = f1;
                else {
   
                    int tmp = f1;
                    f1 = Math.max(f1, f0 + 1);
                    f0 = tmp;
                }
            if (f1 >= k) right = mid - 1;
            else left = mid + 1;
        }
        return left;
    }
}

// 作者:灵茶山艾府
// 链接:https://leetcode.cn/problems/house-robber-iv/solutions/2093952/er-fen-da-an-dp-by-endlesscheng-m558/
// 来源:力扣(LeetCode)
// 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

相关推荐

  1. leetcode 打家劫舍 总结

    2023-12-14 00:18:02       53 阅读
  2. LeetCode 打家劫舍

    2023-12-14 00:18:02       50 阅读
  3. Leetcode 198 打家劫舍

    2023-12-14 00:18:02       43 阅读
  4. Leetcode 337 打家劫舍 III

    2023-12-14 00:18:02       42 阅读
  5. leetcode热题】打家劫舍

    2023-12-14 00:18:02       40 阅读
  6. LeetCode 213. 打家劫舍 II

    2023-12-14 00:18:02       34 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-14 00:18:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-14 00:18:02       106 阅读
  3. 在Django里面运行非项目文件

    2023-12-14 00:18:02       87 阅读
  4. Python语言-面向对象

    2023-12-14 00:18:02       96 阅读

热门阅读

  1. AI:101-基于深度学习的航空影像中建筑物识别

    2023-12-14 00:18:02       67 阅读
  2. 2023.12.13 libstdc++ undefined reference to GLIBCXX

    2023-12-14 00:18:02       63 阅读
  3. 52.0/框架(详细版)

    2023-12-14 00:18:02       53 阅读
  4. Go 语言指针

    2023-12-14 00:18:02       65 阅读
  5. PHP中什么是Composer?

    2023-12-14 00:18:02       50 阅读
  6. oracle 查看统计信息

    2023-12-14 00:18:02       55 阅读
  7. vue2 vue-router引入使用详解

    2023-12-14 00:18:02       60 阅读