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

【每日一題Day331】LC2560打家劫舍 IV | 二分查找 + 貪心

這篇具有很好參考價值的文章主要介紹了【每日一題Day331】LC2560打家劫舍 IV | 二分查找 + 貪心。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

打家劫舍 IV【LC2560】

沿街有一排連續(xù)的房屋。每間房屋內都藏有一定的現(xiàn)金?,F(xiàn)在有一位小偷計劃從這些房屋中竊取現(xiàn)金。

由于相鄰的房屋裝有相互連通的防盜系統(tǒng),所以小偷 不會竊取相鄰的房屋 。

小偷的 竊取能力 定義為他在竊取過程中能從單間房屋中竊取的 最大金額 。

給你一個整數(shù)數(shù)組 nums 表示每間房屋存放的現(xiàn)金金額。形式上,從左起第 i 間房屋中放有 nums[i] 美元。

另給你一個整數(shù) k ,表示竊賊將會竊取的 最少 房屋數(shù)。小偷總能竊取至少 k 間房屋。

返回小偷的 最小 竊取能力。

  • 思路:最小化最大值->二分查找

    • 明確題意:求取至少偷k不相鄰的房屋時,小偷的 最小 竊取能力,即最小化偷取房屋金額的最大值。
    • 尋找單調性(二段性):偷取能力 y y y增加(能偷取的房屋的金額必須小于等于 y y y),能偷取不相鄰房屋數(shù)目增加,因此一定存在一個分割點 y y y,使得
      • 小于y的值,能夠偷取的房屋數(shù)目 c o u n t count count必然不滿足 c o u n t ≥ k count \ge k countk;
      • 大于等于y的值,能夠偷取的房屋數(shù)目 c o u n t count count必然滿足 t o t a l ≥ k total \ge k totalk。
    • 二分答案:因此當偷取房屋數(shù)目至少為 k k k時,尋找最大偷取數(shù)目的最小值 y y y,可以通過二分查找的方法找到最終的 y y y,二分查找的下限為min(nums),上限為max(nums)
    • check函數(shù):
      • 統(tǒng)計最大偷取數(shù)目為 y y y時,能夠偷取的房屋數(shù)目,是否大于 k k k,大于則返回true
      • 由于不能偷取相鄰房屋,因此需要記錄上一個偷取的房屋編號
  • 實現(xiàn)文章來源地址http://www.zghlxwxcb.cn/news/detail-732127.html

    class Solution {
        public int minCapability(int[] nums, int k) {
            int n = nums.length;
            int l = Integer.MIN_VALUE, r = 0;
            for (int num : nums){
                r = Math.max(r, num);
                l = Math.min(l, num);            
            }
            while (l <= r){
                int mid = (l + r) / 2;
                if (check(nums, mid, k)){
                    r = mid - 1;
                }else{
                    l = mid + 1;
                }
            }
            return l;
    
        }
        public boolean check(int[] nums, int target, int k){
            int n = nums.length;
            int j = -2;
            int count = 0;
            for (int i = 0; i < n; i++){
                if (j + 2 <= i && nums[i] <= target){
                    count++;
                    j = i;
                    if (count >= k) return true;
                }     
            }
            return false;
        }
    
    }
    
    • 復雜度
      • 時間復雜度: O ( n log ? C ) O(n\log C) O(nlogC), n n n是數(shù)組的長度,C是二分的范圍,即數(shù)組中最最大和最小值的差值。二分查找的時間復雜度是 O ( log ? C ) O(\log C) O(logC),每次二分查找需要判斷是否符合條件的時間復雜度為 O ( n ) O(n) O(n),因此總的時間復雜度為 O ( n l o g ( n c ) ) O(nlog(nc)) O(nlog(nc))
      • 空間復雜度: O ( 1 ) O(1) O(1)

到了這里,關于【每日一題Day331】LC2560打家劫舍 IV | 二分查找 + 貪心的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

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

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

相關文章

  • 算法刷題Day 48 打家劫舍+打家劫舍II+打家劫舍III

    分成兩段來處理:比如說輸入的長度是n(0~n-1),就分成[0, n - 1)和[1, n)兩部分 寫一個輔助函數(shù),返回兩個狀態(tài),搶或者不搶能得到的最大收獲。

    2024年02月16日
    瀏覽(50)
  • 【LeetCode題目詳解】第九章 動態(tài)規(guī)劃part09 198.打家劫舍 213.打家劫舍II 337.打家劫舍III(day48補)

    【LeetCode題目詳解】第九章 動態(tài)規(guī)劃part09 198.打家劫舍 213.打家劫舍II 337.打家劫舍III(day48補)

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

    2024年02月09日
    瀏覽(33)
  • 動態(tài)規(guī)劃day09(打家劫舍,樹形dp)

    動態(tài)規(guī)劃day09(打家劫舍,樹形dp)

    目錄 198.打家劫舍 看到題目的第一想法 看到代碼隨想錄之后的想法 自己實現(xiàn)過程中遇到的困難 213.打家劫舍II 看到題目的第一想法 看到代碼隨想錄之后的想法 自己實現(xiàn)過程中遇到的困難 337.打家劫舍 III(樹形dp) 看到題目的第一想法 看到代碼隨想錄之后的想法 自己實現(xiàn)過程中

    2024年01月23日
    瀏覽(23)
  • Day 42 算法記錄|動態(tài)規(guī)劃 09 (打家劫舍)

    Day 42 算法記錄|動態(tài)規(guī)劃 09 (打家劫舍)

    1.dp[i]:考慮下標i(包括i)以內的房屋,最多可以偷竊的金額為dp[i]。 2.dp[i] = max(dp[i - 2] + nums[i], dp[i - 1]); 3.初始化,dp[0] 和 dp[1],dp[0] 一定是 nums[0],dp[1] = max(nums[0], nums[1]); 3.遍歷順序,dp[i] 是根據(jù)dp[i - 2] 和 dp[i - 1] 推導出來的,那么一定是從前到后遍歷! 進一步對滾動數(shù)組

    2024年02月15日
    瀏覽(24)
  • Golang每日一練(leetDay0075) 打家劫舍II、最短回文串

    Golang每日一練(leetDay0075) 打家劫舍II、最短回文串

    目錄 213. 打家劫舍 II House Robber ii?????? 214. 最短回文串 Shortest Palindrome???????? ?? 每日一練刷題專欄??? Rust每日一練 專欄 Golang每日一練 專欄 Python每日一練 專欄 C/C++每日一練 專欄 Java每日一練 專欄 你是一個專業(yè)的小偷,計劃偷竊沿街的房屋,每間房內都藏有一定的

    2024年02月06日
    瀏覽(29)
  • 【Day52】代碼隨想錄之動態(tài)規(guī)劃_打家劫舍

    動態(tài)規(guī)劃理論基礎 動規(guī)五部曲: 確定dp數(shù)組 下標及dp[i] 的含義。 遞推公式:比如斐波那契數(shù)列 dp[i] = dp[i-1] + dp[i-2]。 初始化dp數(shù)組。 確定遍歷順序:從前到后or其他。 打印。 出現(xiàn)結果不正確: 打印dp日志和自己想的一樣:遞推公式、初始化或者遍歷順序出錯。 打印dp日志和

    2024年02月22日
    瀏覽(28)
  • 算法訓練第四十八天|198.打家劫舍、213.打家劫舍II、337.打家劫舍III

    算法訓練第四十八天|198.打家劫舍、213.打家劫舍II、337.打家劫舍III

    題目鏈接:198.打家劫舍 參考:https://programmercarl.com/0198.%E6%89%93%E5%AE%B6%E5%8A%AB%E8%88%8D.html 你是一個專業(yè)的小偷,計劃偷竊沿街的房屋。每間房內都藏有一定的現(xiàn)金,影響你偷竊的唯一制約因素就是相鄰的房屋裝有相互連通的防盜系統(tǒng),如果兩間相鄰的房屋在同一晚上被小偷闖入

    2023年04月16日
    瀏覽(18)
  • 代碼隨想錄刷題第48天|LeetCode198打家劫舍、LeetCode213打家劫舍II、LeetCode337打家劫舍III

    代碼隨想錄刷題第48天|LeetCode198打家劫舍、LeetCode213打家劫舍II、LeetCode337打家劫舍III

    1、LeetCode198打家劫舍 題目鏈接:198、打家劫舍 1、dp[i]:考慮下標i(包括i)以內的房屋,最多可以偷竊的金額為dp[i] 。 2、遞推公式: 如果偷第i房間,那么dp[i] = dp[i - 2] + nums[i] ; 如果不偷第i房間,那么dp[i] = dp[i - 1]; 然后dp[i]取最大值,即dp[i] = max(dp[i - 2] + nums[i], dp[i - 1

    2024年02月08日
    瀏覽(158)
  • 【算法|動態(tài)規(guī)劃No.10】leetcode LCR 089. 打家劫舍 & LCR 090. 打家劫舍 II

    【算法|動態(tài)規(guī)劃No.10】leetcode LCR 089. 打家劫舍 & LCR 090. 打家劫舍 II

    個人主頁:兜里有顆棉花糖 歡迎 點贊?? 收藏? 留言? 加關注??本文由 兜里有顆棉花糖 原創(chuàng) 收錄于專欄【手撕算法系列專欄】【LeetCode】 ??本專欄旨在提高自己算法能力的同時,記錄一下自己的學習過程,希望對大家有所幫助 ??希望我們一起努力、成長,共同進步。

    2024年01月20日
    瀏覽(22)
  • 打家劫舍系列

    打家劫舍系列

    ?

    2024年02月15日
    瀏覽(17)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領取紅包

二維碼2

領紅包