From bc1269f4344f8ae69c544f920ba639cf95e46891 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=BD=A9=E8=BE=95=E9=BE=99=E5=84=BF?= Date: Fri, 22 Sep 2023 11:52:46 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A8=E6=80=81=E8=A7=84=E5=88=92=EF=BC=88?= =?UTF-8?q?=E5=9F=BA=E7=A1=80=E7=89=88=EF=BC=89--=20=E6=96=90=E6=B3=A2?= =?UTF-8?q?=E9=82=A3=E5=A5=91=E7=B1=BB=E5=9E=8B=20--=20=E6=89=93=E5=AE=B6?= =?UTF-8?q?=E5=8A=AB=E8=88=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/leetcode/editor/cn/HouseRobber.java | 63 +++++++++++++++++++ .../editor/cn/doc/content/HouseRobber.md | 33 ++++++++++ 2 files changed, 96 insertions(+) create mode 100644 dynamic-programming/src/leetcode/editor/cn/HouseRobber.java create mode 100644 dynamic-programming/src/leetcode/editor/cn/doc/content/HouseRobber.md diff --git a/dynamic-programming/src/leetcode/editor/cn/HouseRobber.java b/dynamic-programming/src/leetcode/editor/cn/HouseRobber.java new file mode 100644 index 0000000..6bee609 --- /dev/null +++ b/dynamic-programming/src/leetcode/editor/cn/HouseRobber.java @@ -0,0 +1,63 @@ +//

你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警

+// +//

给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。

+// +//

 

+// +//

示例 1:

+// +//
+//输入:[1,2,3,1]
+//输出:4
+//解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。
+//     偷窃到的最高金额 = 1 + 3 = 4 。
+// +//

示例 2:

+// +//
+//输入:[2,7,9,3,1]
+//输出:12
+//解释:偷窃 1 号房屋 (金额 = 2), 偷窃 3 号房屋 (金额 = 9),接着偷窃 5 号房屋 (金额 = 1)。
+//     偷窃到的最高金额 = 2 + 9 + 1 = 12 。
+//
+// +//

 

+// +//

提示:

+// +// +// +//
Related Topics
  • 数组
  • 动态规划

  • 👍 2787
  • 👎 0
  • +package leetcode.editor.cn; + +// 198:打家劫舍 +public class HouseRobber { + public static void main(String[] args) { + Solution solution = new HouseRobber().new Solution(); + // TO TEST + } + + //leetcode submit region begin(Prohibit modification and deletion) + class Solution { + public int rob(int[] nums) { + if (nums.length == 1) { + return nums[0]; + } else if (nums.length == 2) { + return Math.max(nums[0], nums[1]); + } + int[] sum = new int[nums.length]; + sum[0] = nums[0]; + sum[1] = nums[1]; + sum[2] = nums[0] + nums[2]; + for (int i = 3; i < nums.length; i++) { + sum[i] = Math.max(sum[i - 2], sum[i - 3]) + nums[i]; + } + return Math.max(sum[nums.length - 1], sum[nums.length - 2]); + } + } +//leetcode submit region end(Prohibit modification and deletion) + +} diff --git a/dynamic-programming/src/leetcode/editor/cn/doc/content/HouseRobber.md b/dynamic-programming/src/leetcode/editor/cn/doc/content/HouseRobber.md new file mode 100644 index 0000000..dd9b690 --- /dev/null +++ b/dynamic-programming/src/leetcode/editor/cn/doc/content/HouseRobber.md @@ -0,0 +1,33 @@ +

    你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警

    + +

    给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。

    + +

     

    + +

    示例 1:

    + +
    +输入:[1,2,3,1]
    +输出:4
    +解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。
    +     偷窃到的最高金额 = 1 + 3 = 4 。
    + +

    示例 2:

    + +
    +输入:[2,7,9,3,1]
    +输出:12
    +解释:偷窃 1 号房屋 (金额 = 2), 偷窃 3 号房屋 (金额 = 9),接着偷窃 5 号房屋 (金额 = 1)。
    +     偷窃到的最高金额 = 2 + 9 + 1 = 12 。
    +
    + +

     

    + +

    提示:

    + + + +
    Related Topics
  • 数组
  • 动态规划

  • 👍 2787
  • 👎 0
  • \ No newline at end of file