最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Leetcode2 組合總和、組合總和II、組合

2022-01-05 13:37 作者:房頂上的鋁皮水塔  | 我要投稿

今天了做了三道比較常規(guī)的遞歸+組合問題

組合總和:

數(shù)組中不存在重復元素,但是一個元素可以重復多次選擇。就像實例1中的 2 2 3一樣。

所以這道題的思路就是:

  1. 控制遞歸的時候從左向右遍歷數(shù)組

  2. 因為可以選擇重復的數(shù)字,所以在下次遞歸的時候還可以從當前下標嘗試一次

  3. 如果當前值已經(jīng)超出了預期結(jié)果,直接return,說明這種嘗試失敗了。

    具體的代碼如下:

組合總和II:

在數(shù)組中存在重復的數(shù)字,最后的結(jié)果中不能包括重復的策略。因此這道題有點像全排列II,在上面的代碼基礎(chǔ)上,我們將數(shù)組按照升序或者是降序進行排列,還是需要保證從左向右進行掃描。如果當前遍歷到的下標對應的數(shù)字和前面一個相同,并且前面一個數(shù)字不在當前的遞歸樹上,我們就可以繼續(xù)遞歸。在不在當前的遞歸樹上,我們還是可以采用全排列II中的方法記錄。這里舉個例子:

在我們排序之后,我們會從左往右遍歷數(shù)組,不會試探重復的元素。因為我們在退出遞歸的時候會恢復現(xiàn)場,所以在情況二中vis[j-1] = false,表明這種情況及其后續(xù)分值已經(jīng)被完成了,所以如果nums[j] == nums[j-1] 直接跳出。

這里我感覺在上篇文章中沒有解釋清楚,如果看到的小伙伴還是存在疑問的話可以私信我交流一下~

具體的代碼如下所示:

組合

使用遞歸的話有明顯的幾處可以進行剪枝:

因為生產(chǎn)的數(shù)組不能存在重復值,所以我們還是從左往右進行掃描,然后掃描之后其實我們是在剩余的元素組成的數(shù)組中進行挑選。考慮一種最壞的情況,剩余元素假設(shè)被選擇完,可以構(gòu)成K個數(shù)嗎? 所以當前選擇數(shù)字的個數(shù)和剩余數(shù)組的元素還有K三者存在一個關(guān)系,我們通過這個關(guān)系可以進行剪枝:

具體代碼如下:


Leetcode2 組合總和、組合總和II、組合的評論 (共 條)

分享到微博請遵守國家法律
垣曲县| 滨海县| 太仆寺旗| 双柏县| 翁牛特旗| 邯郸市| 抚顺市| 通江县| 绿春县| 尚志市| 桦甸市| 河曲县| 武乡县| 微博| 昌吉市| 砀山县| 闸北区| 化德县| 龙山县| 都兰县| 修文县| 汨罗市| 宁国市| 怀安县| 抚顺县| 淅川县| 龙井市| 康保县| 宁远县| 二连浩特市| 开阳县| 道真| 蒙阴县| 无极县| 清远市| 县级市| 泰兴市| 富平县| 徐汇区| 双桥区| 饶平县|