国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【LeetCode: 劍指 Offer II 089. 房屋偷盜(打家竊舍) | 暴力遞歸=>記憶化搜索=>動態(tài)規(guī)劃】

這篇具有很好參考價值的文章主要介紹了【LeetCode: 劍指 Offer II 089. 房屋偷盜(打家竊舍) | 暴力遞歸=>記憶化搜索=>動態(tài)規(guī)劃】。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

【LeetCode: 劍指 Offer II 089. 房屋偷盜(打家竊舍) | 暴力遞歸=>記憶化搜索=>動態(tài)規(guī)劃】

??作者簡介:碩風和煒,CSDN-Java領域新星創(chuàng)作者??,保研|國家獎學金|高中學習JAVA|大學完善JAVA開發(fā)技術棧|面試刷題|面經(jīng)八股文|經(jīng)驗分享|好用的網(wǎng)站工具分享??????
??座右銘:人生如棋,我愿為卒,行動雖慢,可誰曾見我后退一步???????

【LeetCode: 劍指 Offer II 089. 房屋偷盜(打家竊舍) | 暴力遞歸=>記憶化搜索=>動態(tài)規(guī)劃】

題目鏈接

劍指 Offer II 089. 房屋偷盜
198. 打家劫舍

題目描述

一個專業(yè)的小偷,計劃偷竊沿街的房屋。每間房內都藏有一定的現(xiàn)金,影響小偷偷竊的唯一制約因素就是相鄰的房屋裝有相互連通的防盜系統(tǒng),如果兩間相鄰的房屋在同一晚上被小偷闖入,系統(tǒng)會自動報警。

給定一個代表每個房屋存放金額的非負整數(shù)數(shù)組 nums ,請計算 不觸動警報裝置的情況下 ,一夜之內能夠偷竊到的最高金額。

示例 1:

輸入:nums = [1,2,3,1]
輸出:4
解釋:偷竊 1 號房屋 (金額 = 1) ,然后偷竊 3 號房屋 (金額 = 3)。
偷竊到的最高金額 = 1 + 3 = 4 。
示例 2:

輸入:nums = [2,7,9,3,1]
輸出:12
解釋:偷竊 1 號房屋 (金額 = 2), 偷竊 3 號房屋 (金額 = 9),接著偷竊 5 號房屋 (金額 = 1)。
偷竊到的最高金額 = 2 + 9 + 1 = 12 。

提示:

1 <= nums.length <= 100
0 <= nums[i] <= 400

求解思路&實現(xiàn)代碼&運行結果


暴力遞歸

求解思路
  1. 通過讀題目的意思,我們可以大致可以確定一下的分析思路:
  2. 假設我們當前來到cur位置,如果此時cur位置我們選擇不偷,那么我們繼續(xù)下一個位置的判斷。
  3. 如果我們來到當前的cur位置,此時選擇偷cur位置money,那么此時我們需要加nums[cur]位置的金額,同時到cur+2位置進行判斷。
  4. 那么我們最后取得最大的金額即可。
實現(xiàn)代碼
class Solution {
    public int rob(int[] nums) {
        int n=nums.length;
        return process(0,n,nums);
    }

    public int process(int index,int n,int[] nums){
        if(index>=n) return 0;
        return Math.max(process(index+1,n,nums),process(index+2,n,nums)+nums[index]);
    }
}
運行結果

【LeetCode: 劍指 Offer II 089. 房屋偷盜(打家竊舍) | 暴力遞歸=>記憶化搜索=>動態(tài)規(guī)劃】


記憶化搜索

求解思路
  1. 根據(jù)我們遞歸的分析,在遞歸的過程中會產(chǎn)生重復的子過程,所以我們想到了加一個緩存表,也就是我們的記憶化搜索。
實現(xiàn)代碼
class Solution {
    public int rob(int[] nums) {
        int n=nums.length;
        int[] dp=new int[n+1];
        Arrays.fill(dp,-1);
        return process(0,n,nums,dp);
    }

    public int process(int index,int n,int[] nums,int[] dp){
        if(index>=n) return 0;
        if(dp[index]!=-1) return dp[index];
        return dp[index]=Math.max(process(index+1,n,nums,dp),process(index+2,n,nums,dp)+nums[index]);
    }
}
運行結果

【LeetCode: 劍指 Offer II 089. 房屋偷盜(打家竊舍) | 暴力遞歸=>記憶化搜索=>動態(tài)規(guī)劃】


動態(tài)規(guī)劃

求解思路
  1. 接下來我們根據(jù)之前的遞歸思路以及記憶化緩存改寫動態(tài)規(guī)劃。
實現(xiàn)代碼
class Solution {
    public int rob(int[] nums) {
        int n=nums.length;
        int[] dp=new int[n+10];
        for(int index=n-1;index>=0;index--){
            dp[index]=Math.max(dp[index+1],dp[index+2]+nums[index]);
        }
        return dp[0];
    }
}
空間優(yōu)化
class Solution {
    public int rob(int[] nums) {
        int a=0,b=0;
        for(int index=nums.length-1;index>=0;index--){
            int c=Math.max(a,b+nums[index]);
            b=a;
            a=c;
        }
        return a;
    }
}
運行結果

【LeetCode: 劍指 Offer II 089. 房屋偷盜(打家竊舍) | 暴力遞歸=>記憶化搜索=>動態(tài)規(guī)劃】


共勉

最后,我想送給大家一句一直激勵我的座右銘,希望可以與大家共勉!
【LeetCode: 劍指 Offer II 089. 房屋偷盜(打家竊舍) | 暴力遞歸=>記憶化搜索=>動態(tài)規(guī)劃】

【LeetCode: 劍指 Offer II 089. 房屋偷盜(打家竊舍) | 暴力遞歸=>記憶化搜索=>動態(tài)規(guī)劃】文章來源地址http://www.zghlxwxcb.cn/news/detail-432006.html

到了這里,關于【LeetCode: 劍指 Offer II 089. 房屋偷盜(打家竊舍) | 暴力遞歸=>記憶化搜索=>動態(tài)規(guī)劃】的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • Leetcode 劍指 Offer II 042. 最近的請求次數(shù)

    Leetcode 劍指 Offer II 042. 最近的請求次數(shù)

    題目難度: 簡單 原題鏈接 今天繼續(xù)更新 Leetcode 的劍指 Offer(專項突擊版)系列, 大家在公眾號 算法精選 里回復 劍指offer2 就能看到該系列當前連載的所有文章了, 記得關注哦~ 寫一個 RecentCounter 類來計算特定時間范圍內最近的請求。 請實現(xiàn) RecentCounter 類: RecentCounter() 初始化

    2024年02月10日
    瀏覽(26)
  • (貪心) 劍指 Offer 14- II. 剪繩子 II ——【Leetcode每日一題】

    (貪心) 劍指 Offer 14- II. 剪繩子 II ——【Leetcode每日一題】

    難度:中等 給你一根長度為 n 的繩子,請把繩子剪成整數(shù)長度的 m 段( m 、 n 都是整數(shù), n 1 并且 m 1 ),每段繩子的長度記為 k[0],k[1]...k[m - 1] 。請問 k[0]*k[1]*...*k[m - 1] 可能的最大乘積是多少?例如,當繩子的長度是8時,我們把它剪成長度分別為2、3、3的三段,此時得到的最

    2024年02月13日
    瀏覽(23)
  • LeetCode:劍指 Offer 58 - II. 左旋轉字符串

    LeetCode:劍指 Offer 58 - II. 左旋轉字符串

    ??道阻且長,行則將至。?? ??算法,不如說它是一種思考方式?? 算法專欄: ????123 題目描述 :字符串的左旋轉操作是把字符串前面的若干個字符轉移到字符串的尾部。請定義一個函數(shù)實現(xiàn)字符串左旋轉操作的功能。比如,輸入字符串\\\"abcdefg\\\"和數(shù)字2,該函數(shù)將返回左旋

    2024年02月02日
    瀏覽(24)
  • Leetcode-每日一題【劍指 Offer 32 - II. 從上到下打印二叉樹 II】

    Leetcode-每日一題【劍指 Offer 32 - II. 從上到下打印二叉樹 II】

    從上到下按層打印二叉樹,同一層的節(jié)點按從左到右的順序打印,每一層打印到一行。 例如: 給定二叉樹:? [3,9,20,null,null,15,7] , ??? 3 ?? / ? 9? 20 ??? /? ?? 15?? 7 返回其層次遍歷結果: [ ? [3], ? [9,20], ? [15,7] ] 提示: 節(jié)點總數(shù) = 1000 1.題目要求我們從上到下按層打印二

    2024年02月12日
    瀏覽(15)
  • Leetcode-每日一題【劍指 Offer II 010. 和為 k 的子數(shù)組】

    Leetcode-每日一題【劍指 Offer II 010. 和為 k 的子數(shù)組】

    給定一個整數(shù)數(shù)組和一個整數(shù)?k ,請找到該數(shù)組中和為?k?的連續(xù)子數(shù)組的個數(shù)。 示例 1: 輸入: nums = [1,1,1], k = 2 輸出: 2 解釋: 此題 [1,1] 與 [1,1] 為兩種不同的情況 示例 2: 輸入: nums = [1,2,3], k = 3 輸出: 2 提示: 1 = nums.length = 2 * 104 1000 = nums[i] = 1000 107?= k = 107 前置知識 前綴和

    2024年02月15日
    瀏覽(20)
  • (字符串 ) 劍指 Offer 58 - II. 左旋轉字符串 ——【Leetcode每日一題】

    (字符串 ) 劍指 Offer 58 - II. 左旋轉字符串 ——【Leetcode每日一題】

    難度:簡單 字符串的左旋轉操作是把字符串前面的若干個字符轉移到字符串的尾部。請定義一個函數(shù)實現(xiàn)字符串左旋轉操作的功能。比如,輸入字符串\\\"abcdefg\\\"和數(shù)字2,該函數(shù)將返回左旋轉兩位得到的結果\\\"cdefgab\\\"。 示例 1: 輸入: s = “abcdefg”, k = 2 輸出: “cdefgab” 示例 2:

    2024年02月08日
    瀏覽(24)
  • 劍指 Offer 34. 二叉樹中和為某一值的路徑 / LeetCode 113. 路徑總和 II(深度優(yōu)先搜索)

    劍指 Offer 34. 二叉樹中和為某一值的路徑 / LeetCode 113. 路徑總和 II(深度優(yōu)先搜索)

    鏈接:劍指 Offer 34. 二叉樹中和為某一值的路徑;LeetCode 113. 路徑總和 II 難度:中等 給你二叉樹的根節(jié)點 root 和一個整數(shù)目標和 targetSum ,找出所有 從根節(jié)點到葉子節(jié)點 路徑總和等于給定目標和的路徑。 葉子節(jié)點 是指沒有子節(jié)點的節(jié)點。 示例 1: 輸入:root = [5,4,8,11,null,1

    2024年02月03日
    瀏覽(25)
  • 劍指 Offer II 024. 反轉鏈表(經(jīng)典題型)

    劍指 Offer II 024. 反轉鏈表(經(jīng)典題型)

    時間是偉大的作者,她能寫出未來的結局。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?——卓別林 目錄 題目描述: 方法1:迭代法(翻指針) 方法2:頭插法? 方法3:遞歸法? 給定單鏈表的頭節(jié)點 head ,請反轉鏈表, 并返回反轉后的鏈表的頭節(jié)點 。 示例 1: 輸入:head = [1,2,3,4,5]

    2023年04月09日
    瀏覽(23)
  • 劍指 Offer II 010. 和為 k 的子數(shù)組

    劍指 Offer II 010. 和為 k 的子數(shù)組

    給定一個整數(shù)數(shù)組和一個整數(shù) k ,請找到該數(shù)組中和為 k 的連續(xù)子數(shù)組的個數(shù)。 示例 1: 示例 2: 提示: 這個題目做出來不難,直接暴力枚舉。但是利用哈希表和前綴和優(yōu)化的過程我一直不是很理解,所以寫下這篇文章來一點一點的研究,希望能對大家有所幫助 首先,先看最

    2023年04月16日
    瀏覽(20)
  • leetcode 213. 打家劫舍 II

    leetcode 213. 打家劫舍 II

    ? ? ? ? ?本題是?打家劫舍?的進階版,房屋之間形成一個環(huán)了,也就是第一個房屋和最后一個房屋不能一起偷了。那么能偷的情況分為下列三種: 不考慮偷首房間。 不考慮偷尾房間。 不考慮偷首尾房間。 ? ? ? ? 第三種情況包含于第一和第二種情況了,所以分別為第一種

    2024年02月12日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包