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

Leetcode 474 一和零

這篇具有很好參考價值的文章主要介紹了Leetcode 474 一和零。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

題意理解

????????給你一個二進制字符串數(shù)組?strs?和兩個整數(shù)?m?和?n?。

????????請你找出并返回?strs?的最大子集的長度,該子集中?最多?有?m?個?0?和?n?個?1?。

????????如果?x?的所有元素也是?y?的元素,集合?x?是集合?y?的?子集?。

? ? ? ??

? ? ? ? 將字符串0和1的個數(shù)看作是該字符串的兩個維度,假設將其看作物品的重量和體積。

? ? ? ? 那么m和n就是對背包的限制:承重量為m, 體積為的背包。

? ? ? ? 求元素最多的子集,該問題可以轉換為:求裝滿承重量m體積n的背包最多有放多少件物品。

? ? ? ? 所以該問題被轉換為一個二維的0-1背包問題。

解題思路

? ? ? ? 首先理解題意將其轉換為0-1背包問題。

? ? ? ? 其次,此處的動態(tài)滾動數(shù)組是二維的:

????????dp[i][j]表示:裝滿承重i,體積為j的背包最多有多少件物品。

? ? ? ? 之前的遞推公式為:

? ? ? ? dp[j]=max(dp[j],dp[j-weight[i]]+values[i])

? ? ? ? 此處遞推公式做些許調整:

? ? ? ? dp[i][j]=max(dp[i][j],dp[i-weight[i]][j-vomule[i]]+1)

? ? ? ? 初始化:

? ? ? ? ? ? ? ? 對于背包為0 的物品裝滿需要0件物品。

1.動態(tài)規(guī)劃:動態(tài)滾動數(shù)組求解二維0-1背包問題

任然是采用動態(tài)規(guī)劃五部曲來求解該問題,不同之處在于此處的背包是一個二維限制的背包,此處的dp滾動數(shù)組是二維的。

public int findMaxForm(String[] strs, int m, int n) {
        int[][] dp=new int[m+1][n+1];
        for(int[] tmp:dp) Arrays.fill(tmp,0);
        int countZero=0,countOne=0;
        //遍歷物品
        for(int i=0;i<strs.length;i++){
            //計算0/1個數(shù)
            countZero=0;
            countOne=0;
            for(char c:strs[i].toCharArray()){
                if(c=='0') countZero++;
                if(c=='1') countOne++;
            }
            //遍歷m
            for(int w=m;w>=0;w--){
                //遍歷n
                for(int v=n;v>=0;v--){
                    if(countZero<=w&&countOne<=v){
                        dp[w][v]=Math.max(dp[w][v],dp[w-countZero][v-countOne]+1);
                    }
                }
            }
        }
        return dp[m][n];
    }

2.分析

時間復雜度

? ? ? ? O(m×n×str_len)

空間復雜度

? ? ? ? O(m×n)文章來源地址http://www.zghlxwxcb.cn/news/detail-798113.html

到了這里,關于Leetcode 474 一和零的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

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

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

相關文章

  • 【LeetCode題目詳解】第九章 動態(tài)規(guī)劃 part05 1049. 最后一塊石頭的重量 II 494. 目標和 474.一和零(day43補)

    【LeetCode題目詳解】第九章 動態(tài)規(guī)劃 part05 1049. 最后一塊石頭的重量 II 494. 目標和 474.一和零(day43補)

    有一堆石頭,用整數(shù)數(shù)組? stones 表示。其中? stones[i] 表示第 i 塊石頭的重量。 每一回合,從中選出 任意兩塊石頭 ,然后將它們一起粉碎。假設石頭的重量分別為? x 和? y ,且? x = y 。那么粉碎的可能結果如下: 如果? x == y ,那么兩塊石頭都會被完全粉碎; 如果? x != y

    2024年02月09日
    瀏覽(25)
  • 代碼隨想錄Day36 動態(tài)規(guī)劃05 LeetCode T1049最后一塊石頭的重量II T494 目標和 T474 一和零

    代碼隨想錄Day36 動態(tài)規(guī)劃05 LeetCode T1049最后一塊石頭的重量II T494 目標和 T474 一和零

    理論基礎? :?代碼隨想錄Day34 LeetCode T343整數(shù)拆分 T96 不同的二叉搜索樹-CSDN博客 1.明白dp數(shù)組的含義 2.明白遞推公式的含義 3.初始化dp數(shù)組 4.注意dp數(shù)組的遍歷順序 5.打印dp數(shù)組排錯 題目鏈接:1049. 最后一塊石頭的重量 II - 力扣(LeetCode) 這題我們仍然采用動規(guī)五部曲來寫,這題和

    2024年02月06日
    瀏覽(19)
  • 算法訓練第四十三天|1049. 最后一塊石頭的重量 II 、494. 目標和、474.一和零

    算法訓練第四十三天|1049. 最后一塊石頭的重量 II 、494. 目標和、474.一和零

    題目鏈接:1049. 最后一塊石頭的重量 II 參考:https://programmercarl.com/1049.%E6%9C%80%E5%90%8E%E4%B8%80%E5%9D%97%E7%9F%B3%E5%A4%B4%E7%9A%84%E9%87%8D%E9%87%8FII.html 題目難度:中等 有一堆石頭,每塊石頭的重量都是正整數(shù)。 每一回合,從中選出任意兩塊石頭,然后將它們一起粉碎。假設石頭的重量分

    2023年04月09日
    瀏覽(19)
  • 474. 一和零

    目錄 1、題目描述 2、思路:動態(tài)規(guī)劃01背包 2.1、確定dp數(shù)組及下標含義 2.2、確定遞歸數(shù)組 2.3、初始化 2.4、確定遍歷順序 給你一個二進制字符串數(shù)組 strs 和兩個整數(shù) m 和 n 。 請你找出并返回 strs 的最大子集的長度,該子集中 最多 有 m 個 0 和 n 個 1 。 如果 x 的所有元素也是

    2024年02月03日
    瀏覽(21)
  • 力扣:474. 一和零(動態(tài)規(guī)劃)(01背包)

    力扣:474. 一和零(動態(tài)規(guī)劃)(01背包)

    給你一個二進制字符串數(shù)組 strs 和兩個整數(shù) m 和 n 。 請你找出并返回 strs 的最大子集的長度,該子集中 最多 有 m 個 0 和 n 個 1 。 如果 x 的所有元素也是 y 的元素,集合 x 是集合 y 的 子集 。 示例 1 : 輸入: strs = [“10”, “0001”, “111001”, “1”, “0”], m = 5, n = 3 輸出:

    2024年01月22日
    瀏覽(20)
  • 力扣第474題 一和零 c++ 動態(tài)規(guī)劃 01背包

    474. 一和零 中等 相關標簽 數(shù)組? ?字符串? ?動態(tài)規(guī)劃 給你一個二進制字符串數(shù)組? strs ?和兩個整數(shù)? m ?和? n ?。 請你找出并返回? strs ?的最大子集的長度,該子集中? 最多 ?有? m ?個? 0 ?和? n ?個? 1 ?。 如果? x ?的所有元素也是? y ?的元素,集合? x ?是集合? y

    2024年02月06日
    瀏覽(27)
  • leetcode 動態(tài)規(guī)劃(最后一塊石頭的重量II、目標和、一和零)

    leetcode 動態(tài)規(guī)劃(最后一塊石頭的重量II、目標和、一和零)

    力扣題目鏈接(opens new window) 題目難度:中等 有一堆石頭,每塊石頭的重量都是正整數(shù)。 每一回合,從中選出任意兩塊石頭,然后將它們一起粉碎。假設石頭的重量分別為 x 和 y,且 x = y。那么粉碎的可能結果如下: 如果 x == y,那么兩塊石頭都會被完全粉碎; 如果 x != y,那

    2024年02月03日
    瀏覽(30)
  • day43 | 1049. 最后一塊石頭的重量 II、494. 目標和、474.一和零

    目錄: 1049. 最后一塊石頭的重量 II 有一堆石頭,用整數(shù)數(shù)組? stones ?表示。其中? stones[i] ?表示第? i ?塊石頭的重量。 每一回合,從中選出 任意兩塊石頭 ,然后將它們一起粉碎。假設石頭的重量分別為? x ?和? y ,且? x = y 。那么粉碎的可能結果如下: 如果? x == y ,那

    2024年02月12日
    瀏覽(25)
  • 【十九】【動態(tài)規(guī)劃】518. 零錢兌換 II、279. 完全平方數(shù)、474. 一和零,三道題目深度解析

    【十九】【動態(tài)規(guī)劃】518. 零錢兌換 II、279. 完全平方數(shù)、474. 一和零,三道題目深度解析

    動態(tài)規(guī)劃就像是解決問題的一種策略,它可以幫助我們更高效地找到問題的解決方案。這個策略的核心思想就是將問題分解為一系列的小問題,并將每個小問題的解保存起來。這樣,當我們需要解決原始問題的時候,我們就可以直接利用已經計算好的小問題的解,而不需要重

    2024年02月03日
    瀏覽(25)
  • Day43|動態(tài)規(guī)劃part05: 1049. 最后一塊石頭的重量 II、494. 目標和、474. 一和零

    本題物品的重量為stones[i],物品的價值也為stones[i]。 對應著01背包里的物品重量weight[i]和 物品價值value[i]。 確定dp數(shù)組以及下標的含義 dp[j]表示容量(這里說容量更形象,其實就是重量)為j的背包,最多可以背最大重量為dp[j] 。 確定遞推公式 01背包的遞推公式為:dp[j] = ma

    2024年04月23日
    瀏覽(26)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領取紅包

二維碼2

領紅包