LeetCode第198题 - 打家劫舍

题目

解答

方案一:动态规划

class Solution {
   
    public int rob(int[] nums) {
   
        if (nums == null || nums.length == 0) {
   
            return 0;
        }

        if (nums.length < 2) {
   
            return nums[0];
        }

        if (nums.length < 3) {
   
            return Math.max(nums[0], nums[1]);
        }

        int[] robValues = new int[nums.length];

        robValues[0] = nums[0];
        robValues[1] = Math.max(nums[0], nums[1]);

        for (int i = 2, imax = nums.length; i < imax; ++i) {
   
            robValues[i] = Math.max(nums[i] + robValues[i - 2], robValues[i - 1]);
        }

        return robValues[nums.length - 1];
    }
}

方案二:递归

class Solution {
   
    public int rob(int[] nums, int pos) {
   
        if (pos < 0) {
   
            return 0;
        }

        if (pos < 1) {
   
            return nums[pos];
        }

        int value = Math.max(nums[pos] + rob(nums, pos - 2), rob(nums, pos - 1));
        return value;
    }

    public int rob(int[] nums) {
   
        return rob(nums, nums.length - 1);
    }
}

要点
使用动态规划的方法,可以得出答案。

准备的用例,如下


@Before
public void before() {
   
    t = new Solution();
}

@Test
public void test001() {
   
    assertEquals(4, t.rob(new int[] {
    1, 2, 3, 1 }));
}

@Test
public void test002() {
   
    assertEquals(12, t.rob(new int[] {
    2, 7, 9, 3, 1 }));
}

@Test
public void test003() {
   
    assertEquals(2, t.rob(new int[] {
    2 }));
}

@Test
public void test004() {
   
    assertEquals(7, t.rob(new int[] {
    2, 7 }));
}

@Test
public void test005() {
   
    assertEquals(7, t.rob(new int[] {
    7, 2 }));
}

相关推荐

  1. LeetCode198 - 打家劫舍

    2024-01-17 08:58:06       35 阅读
  2. Leetcode 198 打家劫舍

    2024-01-17 08:58:06       26 阅读
  3. leetcode198 打家劫舍

    2024-01-17 08:58:06       8 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-17 08:58:06       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-17 08:58:06       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-17 08:58:06       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-17 08:58:06       18 阅读

热门阅读

  1. 设计模式——策略模式

    2024-01-17 08:58:06       29 阅读
  2. 微信小程序支付之V2支付

    2024-01-17 08:58:06       24 阅读
  3. Django消息框架

    2024-01-17 08:58:06       36 阅读
  4. Wargames与bash知识19

    2024-01-17 08:58:06       27 阅读
  5. 【Python 千题 —— 基础篇】猜数字小游戏

    2024-01-17 08:58:06       30 阅读
  6. js arguments对象的由来和用法

    2024-01-17 08:58:06       26 阅读