目標(biāo)和 and 一和零 (go)

目標(biāo)和

問(wèn)題描述

給你一個(gè)整數(shù)數(shù)組 nums 和一個(gè)整數(shù) target 厦酬。

向數(shù)組中的每個(gè)整數(shù)前添加 '+' 或 '-' 憾朴,然后串聯(lián)起所有整數(shù),可以構(gòu)造一個(gè) 表達(dá)式 :

例如焙贷,nums = [2, 1] 缩抡,可以在 2 之前添加 '+' ,在 1 之前添加 '-' 独柑,然后串聯(lián)起來(lái)得到表達(dá)式 "+2-1" 迈窟。
返回可以通過(guò)上述方法構(gòu)造的、運(yùn)算結(jié)果等于 target 的不同 表達(dá)式 的數(shù)目忌栅。

思路

sum :是數(shù)組內(nèi)所有元素的總和车酣,
target :目標(biāo)和
假如 left - right =target 。即存在此情況
left : 所有前面為+的元素的和
right : 所有前面為- 的元素的和

列出等式:
等式1 : left + right =sum
等式2 : left - right = target
由等式1 和等式2 可以得出:
等式3 : left = (sum+target)/2

由于sum 和 target 是固定的索绪,所以left和right也是固定的湖员。

OK,我們把問(wèn)題轉(zhuǎn)化一下:即只需要求的 所有 left的組合即可以確定 答案瑞驱。

這就和01背包問(wèn)題類(lèi)似了娘摔,選擇還是不選擇。

特殊情況考慮:
(sum+target)/2 不能是小數(shù)唤反,即必須整除凳寺。
|sum| > |target|

go代碼實(shí)現(xiàn)
func findTargetSumWays(nums []int, target int) int {
    sum :=0
    for _, v := range nums {
        sum+=v
    }
//考慮特殊情況
    if target >sum || (sum+target)<0 { return 0} 
    if (sum+target)%2 == 1 { return 0}
//背包容量就是left
    bag := (sum+target)/2
    dp := make([]int,bag+1)
//這里初始化為1
    dp[0] =1 
    for i:=0; i<len(nums) ; i++ {
//每運(yùn)行一遍,覆蓋之前的值
        for j := bag; j>=nums[i]; j-- {
            dp[j] += dp[j-nums[i]]
        }
    }
    return dp[bag]
}

一和零

問(wèn)題描述

給你一個(gè)二進(jìn)制字符串?dāng)?shù)組 strs 和兩個(gè)整數(shù) m 和 n 彤侍。

請(qǐng)你找出并返回 strs 的最大子集的長(zhǎng)度肠缨,該子集中 最多 有 m 個(gè) 0 和 n 個(gè) 1 。

如果 x 的所有元素也是 y 的元素盏阶,集合 x 是集合 y 的 子集 晒奕。

思路

m: 0的容量
n: 1的容量

這里有兩個(gè)背包,要同時(shí)滿(mǎn)足,需要用二維數(shù)組去保存

1 dp的含義
dp[i][j] : 在最多有i個(gè)0脑慧,j個(gè)1的 子集的最大長(zhǎng)度魄眉,

2 確定遞推規(guī)則
一個(gè)字符中,0有 zsum闷袒,1有osum

dp[i][j] = max (dp[i][j] , dp[i-zsum][j-osum] + 1)

3 初始化dp
dp 初始化為0即可坑律,

4 遍歷順序
從后往前,

5 舉例
霜运。脾歇。。淘捡。

go代碼實(shí)現(xiàn)
func findMaxForm(strs []string, m int, n int) int {
    dp := make([][]int,m+1)
    for i,_ := range dp {
        dp[i] = make([]int,n+1)
    }
    for i:=0;i<len(strs);i++ {
        zsum, osum:= 0,0
        for _,v := range strs[i] {
            if v == '0'{
                zsum+=1
            } else {
                osum+=1
            }
        }
            for j:=m; j>=zsum; j-- {
                for k:=n; k>=osum; k-- {
                    dp[j][k] = max(dp[j][k],dp[j-zsum][k-osum]+1)
                }
            }
    }
    return dp[m][n]
}
func max(a,b int) int {
    if a>b {
        return a
    } else {
        return b
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末藕各,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子焦除,更是在濱河造成了極大的恐慌激况,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,427評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件膘魄,死亡現(xiàn)場(chǎng)離奇詭異乌逐,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)创葡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)浙踢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人灿渴,你說(shuō)我怎么就攤上這事洛波。” “怎么了骚露?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,747評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵蹬挤,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我棘幸,道長(zhǎng)焰扳,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,939評(píng)論 1 295
  • 正文 為了忘掉前任误续,我火速辦了婚禮吨悍,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蹋嵌。我一直安慰自己育瓜,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布欣尼。 她就那樣靜靜地躺著,像睡著了一般愕鼓。 火紅的嫁衣襯著肌膚如雪菇晃。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,737評(píng)論 1 305
  • 那天驻子,我揣著相機(jī)與錄音崇呵,去河邊找鬼馅袁。 笑死,一個(gè)胖子當(dāng)著我的面吹牛犹褒,可吹牛的內(nèi)容都是我干的弛针。 我是一名探鬼主播削茁,決...
    沈念sama閱讀 40,448評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼付材,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了厌衔?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,352評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤睬隶,失蹤者是張志新(化名)和其女友劉穎页徐,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體恤左,經(jīng)...
    沈念sama閱讀 45,834評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評(píng)論 3 338
  • 正文 我和宋清朗相戀三年戳气,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了巧鸭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片纲仍。...
    茶點(diǎn)故事閱讀 40,133評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡郑叠,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出油吭,到底是詐尸還是另有隱情署拟,我是刑警寧澤推穷,帶...
    沈念sama閱讀 35,815評(píng)論 5 346
  • 正文 年R本政府宣布馒铃,位于F島的核電站,受9級(jí)特大地震影響区宇,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜炉爆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望卧晓。 院中可真熱鬧芬首,春花似錦逼裆、人聲如沸郁稍。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,022評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至财破,卻和暖如春然评,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背狈究。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,147評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留盏求,地道東北人抖锥。 一個(gè)月前我還...
    沈念sama閱讀 48,398評(píng)論 3 373
  • 正文 我出身青樓碎罚,卻偏偏與公主長(zhǎng)得像磅废,于是被迫代替她去往敵國(guó)和親拯勉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子憔购,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 算法思想貪心思想雙指針排序快速選擇堆排序桶排序荷蘭國(guó)旗問(wèn)題二分查找搜索BFSDFSBacktracking分治動(dòng)態(tài)...
    第六象限閱讀 3,105評(píng)論 0 0
  • 目錄 1 左神部分集錦 2 Leetcode前150題 3 诺急粒客網(wǎng)劍指offer 4 JavaG 5 題目中的...
    小小千千閱讀 1,003評(píng)論 0 0
  • 0-1背包 有N件物品和?個(gè)最多能被重量為W 的背包妥曲。第i件物品的重量是weight[i]钦购,得到的價(jià)值是value...
    知止9528閱讀 959評(píng)論 0 1
  • 他人的整理與總結(jié): https://leetcode.wang/ 1. & 15. K-sum 問(wèn)題 此類(lèi)問(wèn)題的解...
    oneoverzero閱讀 1,851評(píng)論 0 1
  • 常規(guī)動(dòng)態(tài)規(guī)劃問(wèn)題 相關(guān)題目: 70.爬樓梯 70.爬樓梯 描述 假設(shè)你正在爬樓梯檐盟。需要 n 階你才能到達(dá)樓頂。 每...
    要記錄的Ivan閱讀 581評(píng)論 0 0