iT邦幫忙

2024 iThome 鐵人賽

DAY 28
0
自我挑戰組

初學者學習到的JavaScript 知識系列 第 28

鐵人賽DAY28-leetcode練習(二)

  • 分享至 

  • xImage
  •  

LeetCode 198題是House Robber,是一個動態規劃問題。
題目描述
有一排房子,每個房子裡都有一定數量的金錢。你不能連續搶兩間相鄰的房子,否則會觸發警報。你的目標是計算出在不能搶相鄰房子的情況下可以搶劫的房子的最大金額。

解題想法
對於每一間房子,都有兩種選擇:
1.搶這間房子,然後跳過前一間。
2.不搶這間房子,只取前面房子的最大金額。

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

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

上一篇
鐵人賽DAY27-leetcode練習(一)
下一篇
鐵人賽DAY29-leetcode練習(三)
系列文
初學者學習到的JavaScript 知識30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言