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

leetcode216. 組合總和 III(回溯算法-java)

這篇具有很好參考價值的文章主要介紹了leetcode216. 組合總和 III(回溯算法-java)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

leetcode216. 組合總和 III

來源:力扣(LeetCode)
鏈接:https://leetcode.cn/problems/combination-sum-iii

題目描述

找出所有相加之和為 n 的 k 個數(shù)的組合,且滿足下列條件:
只使用數(shù)字1到9
每個數(shù)字 最多使用一次
返回 所有可能的有效組合的列表 。該列表不能包含相同的組合兩次,組合可以以任何順序返回。

示例 1:
輸入: k = 3, n = 7
輸出: [[1,2,4]]
解釋:
1 + 2 + 4 = 7
沒有其他符合的組合了。

示例 2:
輸入: k = 3, n = 9
輸出: [[1,2,6], [1,3,5], [2,3,4]]
解釋:
1 + 2 + 6 = 9
1 + 3 + 5 = 9
2 + 3 + 4 = 9
沒有其他符合的組合了。

示例 3:
輸入: k = 4, n = 1
輸出: []
解釋: 不存在有效的組合。
在[1,9]范圍內(nèi)使用4個不同的數(shù)字,我們可以得到的最小和是1+2+3+4 = 10,因?yàn)?0 > 1,沒有有效的組合。

提示:
2 <= k <= 9
1 <= n <= 60

解題思路

在回溯算法里,組合也是子集問題的拓展,是子集的一部分,子集問題可以查看leetcode78 子集
在子集中,是把所有可能性列出來。
比如【1,2,3】 n = 3,k = 2
s0 是什么都不選時的子集
s1 是只選一個元素的子集leetcode216. 組合總和 III(回溯算法-java)

s_2 是選兩個元素的子集leetcode216. 組合總和 III(回溯算法-java)
和為3 ,個數(shù)為2。我們要的就是s_2 中的 [1,2] 這個結(jié)果,因此這個問題也和子集一樣,同樣可以用回溯算法的框架去解決。只是我們加上條件,篩選出s_2中的[1,2]

回溯算法的框架:
result = []
def process(選擇列表):
if 滿足結(jié)束條件:
result.add(路徑)
return
for 選擇 in 選擇列表:
做選擇
backtrack(路徑, 選擇列表)
撤銷選擇

代碼演示

class Solution {
	//記錄答案
    List<List<Integer>> ans = new LinkedList<>();
    //記錄回溯時做的選擇
    LinkedList<Integer> record = new LinkedList<>();
    public List<List<Integer>> combinationSum3(int k, int n) {
        process(k,n,1);
        return ans;
    }
/**
* k 是目標(biāo)元素的個數(shù),我們每次選擇一個時,下次遞歸時要減1
* n 要組成的目標(biāo)和,
* index 遞歸來到的下標(biāo)
*/
    public void process(int k,int n,int index){
    	//base case n < 0 表示前面選擇的數(shù)字,不符合要求,直接返回
    	//k < 0 代表選擇的個數(shù)超出了要求,不合規(guī),直接返回
        if(n < 0 || k < 0){
            return ;
        }
        //副歌要求的情況,直接加到答案里
        if(n == 0 && k == 0){
            ans.add(new LinkedList<>(record));
            return;
        }
		//可以做出的選擇,1 到 9 
        for(int i = index;i <= 9;i++){
        	//做選擇 
            record.addLast(i);
            process(k - 1,n - i,i + 1);
            //撤銷選擇
            record.removeLast();
        }
    }
}

回溯算法專題

leetcode78 子集

leetcode77. 組合

leetcode40. 組合總和 II

leetcode90. 子集 II文章來源地址http://www.zghlxwxcb.cn/news/detail-497429.html

到了這里,關(guān)于leetcode216. 組合總和 III(回溯算法-java)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【LeetCode:216. 組合總和 III + 遞歸】

    【LeetCode:216. 組合總和 III + 遞歸】

    ?? 算法題 ?? ?? 算法刷題專欄 | 面試必備算法 | 面試高頻算法 ?? ?? 越難的東西,越要努力堅(jiān)持,因?yàn)樗哂泻芨叩膬r值,算法就是這樣? ?? 作者簡介:碩風(fēng)和煒,CSDN-Java領(lǐng)域優(yōu)質(zhì)創(chuàng)作者??,保研|國家獎學(xué)金|高中學(xué)習(xí)JAVA|大學(xué)完善JAVA開發(fā)技術(shù)棧|面試刷題|面經(jīng)八股文

    2024年04月25日
    瀏覽(25)
  • Leetcode—216.組合總和III【中等】

    Leetcode—216.組合總和III【中等】

    之后我會持續(xù)更新,如果喜歡我的文章,請記得一鍵三連哦,點(diǎn)贊關(guān)注收藏,你的每一個贊每一份關(guān)注每一次收藏都將是我前進(jìn)路上的無限動力 ?。?!↖(▔▽▔)↗感謝支持!

    2024年01月23日
    瀏覽(18)
  • 代碼隨想錄22| 216.組合總和III, 17.電話號碼的字母組合

    題目鏈接/文章講解:鏈接地址 視頻講解:鏈接地址 代碼思路:回溯三部曲: 1.確定函數(shù)參數(shù):n,k,sum,startIndex; 2.結(jié)束條件,path == k,并且如果sum==n 結(jié)束遞歸 3.遞歸回溯邏輯。 題目鏈接/文章講解:鏈接地址 視頻講解:鏈接地址 代碼思路:傳入?yún)?shù):輸入的數(shù)字,第幾個數(shù)字的

    2024年02月11日
    瀏覽(86)
  • LeetCode算法題解(回溯)|39. 組合總和、40. 組合總和 II、131. 分割回文串

    題目鏈接:39. 組合總和 題目描述: 給你一個? 無重復(fù)元素 ?的整數(shù)數(shù)組? candidates ?和一個目標(biāo)整數(shù)? target ?,找出? candidates ?中可以使數(shù)字和為目標(biāo)數(shù)? target ?的 所有 ? 不同組合 ?,并以列表形式返回。你可以按? 任意順序 ?返回這些組合。 candidates ?中的? 同一個 ?數(shù)

    2024年02月05日
    瀏覽(26)
  • LeetCode-216-組合總和Ⅱ

    題目鏈接: LeetCode-216-組合總和Ⅱ 解題思路:回溯算法 注意事項(xiàng)注釋中有 代碼實(shí)現(xiàn):

    2024年02月09日
    瀏覽(20)
  • 【Leetcode60天帶刷】day27回溯算法——39. 組合總和,40.組合總和II,131.分割回文串

    【Leetcode60天帶刷】day27回溯算法——39. 組合總和,40.組合總和II,131.分割回文串

    ? 39. 組合總和 給你一個? 無重復(fù)元素 ?的整數(shù)數(shù)組? candidates ?和一個目標(biāo)整數(shù)? target ?,找出? candidates ?中可以使數(shù)字和為目標(biāo)數(shù)? target ?的 所有 ? 不同組合 ?,并以列表形式返回。你可以按? 任意順序 ?返回這些組合。 candidates ?中的? 同一個 ?數(shù)字可以? 無限制重復(fù)

    2024年02月11日
    瀏覽(24)
  • LeetCode 39. 組合總和(回溯+剪枝)

    鏈接:LeetCode 39. 組合總和 難度:中等 給你一個 無重復(fù)元素 的整數(shù)數(shù)組 candidates 和一個目標(biāo)整數(shù) target ,找出 candidates 中可以使數(shù)字和為目標(biāo)數(shù) target 的 所有 不同組合 ,并以列表形式返回。你可以按 任意順序 返回這些組合。 candidates 中的 同一個 數(shù)字可以 無限制重復(fù)被選

    2024年02月14日
    瀏覽(22)
  • DAY25:回溯算法組合題216、17

    經(jīng)過了昨天組合的題目的學(xué)習(xí),這道題比較簡單,套用之前的模板就可以 基本思路 終止條件,遇到向量的個數(shù)一樣,并且sum等于n的時候終止。 輸入變量,n,k,還有起始的idx和基于當(dāng)前元素之和的sum 邏輯就是,按照循環(huán)遞歸下去,注意要對sum值進(jìn)行回溯。 時間復(fù)雜度O(n *

    2024年01月20日
    瀏覽(19)
  • leetcode77. 組合(回溯算法-java)

    leetcode77. 組合(回溯算法-java)

    來源:力扣(LeetCode) 鏈接:https://leetcode.cn/problems/combinations 給定兩個整數(shù) n 和 k,返回范圍 [1, n] 中所有可能的 k 個數(shù)的組合。 你可以按 任何順序 返回答案。 示例 1: 輸入:n = 4, k = 2 輸出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ] 示例 2: 輸入:n = 1, k = 1 輸出:[[1]] 提示:

    2024年02月11日
    瀏覽(19)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包