付費限定

DFS+模擬: 組合之和 III Combination Sum III_Leetcode #216 精選75題

更新於 發佈於 閱讀時間約 9 分鐘

題目敘述

題目會給我們一個參數k 和 目標值n。

請問我們從1~9內挑k個相異的數字,使得他們的總和為n 的組合有哪些

挑選時,每個數字必須相異,而且每個數字只能選一次。


題目的原文敘述


測試範例

Example 1:

Input: k = 3, n = 7
Output: [[1,2,4]]
Explanation:
1 + 2 + 4 = 7
There are no other valid combinations.

Example 2:

Input: k = 3, n = 9
Output: [[1,2,6],[1,3,5],[2,3,4]]
Explanation:
1 + 2 + 6 = 9
1 + 3 + 5 = 9
2 + 3 + 4 = 9
There are no other valid combinations.

Example 3:

Input: k = 4, n = 1
Output: []
Explanation: There are no valid combinations.
Using 4 different numbers in the range [1,9], the smallest sum we can get is 1+2+3+4 = 10 and since 10 > 1, there are no valid combination.

約束條件

Constraints:

  • 2 <= k <= 9

參數k介於2~9

  • 1 <= n <= 60

目標值n介於1~60


演算法 DFS + 回溯法 模擬

既然已經給定選擇範圍,參數k和目標值n又壓縮的特別小,心裡大概有個底,枚舉所有可能的選擇過程,看看那些組合可以讓總和剛好等於n,如果遇到了,就加到解答result裡面。


複習 DFS + 回溯法模板

基本上,看到枚舉類的題目,例如展開所有子集合、所有C(n,k))的組合、所有n!的直線排列... 等等需要列舉所有可能情況的題目,往往很適合使用DFS深度優先 + 回溯法的技巧與模板。

整個抽象化的思考框架和演算法範本如下

若遇到終止條件 或滿足指定需求:
則 更新結果
以行動支持創作者!付費即可解鎖
本篇內容共 3922 字、1 則留言,僅發佈於Leetcode精選75題 解析+統整你目前無法檢視以下內容,可能因為尚未登入,或沒有該房間的查看權限。
avatar-img
92會員
425內容數
由有業界實戰經驗的演算法工程師, 手把手教你建立解題的框架, 一步步寫出高效、清晰易懂的解題答案。 著重在讓讀者啟發思考、理解演算法,熟悉常見的演算法模板。 深入淺出地介紹題目背後所使用的演算法意義,融會貫通演算法與資料結構的應用。 在幾個經典的題目融入一道題目的多種解法,或者同一招解不同的題目,擴展廣度,並加深印象。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
題目敘述 題目會給我們一個傳統手機的數字鍵盤 和一個數字鍵的輸入字串digits,要求我們列舉出所有輸入字串digits可能對應到的英文字母的排列。 例如輸入digits="23" 那對應到的英文字母排列就是"ad", "ae", "af", "bd", "be", "bf", "cd", "
題目敘述 題目會給我們一個4位數字的數字鎖,還有解鎖的密碼target,和陷阱數字deadends(假如遇到的會鎖會直接卡住,不能在撥動轉盤了)。 預設開始的狀態是0000,請問,最少要撥動轉盤幾次才能解鎖? 題目的原文敘述 測試範例 Example 1: Input: deaden
題目敘述 題目給定一個二維陣列maze代表迷宮的布局, 其中標記為"."的地方代表可通過,標記為"+"代表牆壁不可通過。 每次移動的時候,可以選擇往上、下、左、右移動一格。 請問從出發點entrace開始走的話,抵達迷宮出口最短距離的步數是多少? 如果無解的話,返回-1。 題目的原文敘述
題目敘述 給定一個正整數n,請找出最少用幾個完全平方數,可以讓他們的總和為n? 例如 n=12,最少用3個完全平方數就可讓他們的總和為n,因為12 = 4 + 4 + 4 題目的原文敘述 測試範例 Example 1: Input: n = 12 Output: 3 Explanat
題目敘述 圖目會給定我們一串已知變數作除法的值,以分子在前,分母在後的形式表達。 要求我們針對未知的變數除法作計算,以浮點數的形式返回答案;如果無解,返回-1.0。 題目的原文敘述 測試範例 Example 1: Input: equations = [["a","b"],["b",
題目會給定我們一個輸入陣列connections,和城市的總數目n。 輸入陣列裡面是以pair的方式儲存,(a, b) 分邊代表這條邊的起點和終點。 請問,我們需要改變多少條邊的方向,才能讓每條路徑都指向編號零號的城市( City #0)? 註: 題目還保證,在改變方向之後,一定可以讓每座城
題目敘述 題目會給我們一個傳統手機的數字鍵盤 和一個數字鍵的輸入字串digits,要求我們列舉出所有輸入字串digits可能對應到的英文字母的排列。 例如輸入digits="23" 那對應到的英文字母排列就是"ad", "ae", "af", "bd", "be", "bf", "cd", "
題目敘述 題目會給我們一個4位數字的數字鎖,還有解鎖的密碼target,和陷阱數字deadends(假如遇到的會鎖會直接卡住,不能在撥動轉盤了)。 預設開始的狀態是0000,請問,最少要撥動轉盤幾次才能解鎖? 題目的原文敘述 測試範例 Example 1: Input: deaden
題目敘述 題目給定一個二維陣列maze代表迷宮的布局, 其中標記為"."的地方代表可通過,標記為"+"代表牆壁不可通過。 每次移動的時候,可以選擇往上、下、左、右移動一格。 請問從出發點entrace開始走的話,抵達迷宮出口最短距離的步數是多少? 如果無解的話,返回-1。 題目的原文敘述
題目敘述 給定一個正整數n,請找出最少用幾個完全平方數,可以讓他們的總和為n? 例如 n=12,最少用3個完全平方數就可讓他們的總和為n,因為12 = 4 + 4 + 4 題目的原文敘述 測試範例 Example 1: Input: n = 12 Output: 3 Explanat
題目敘述 圖目會給定我們一串已知變數作除法的值,以分子在前,分母在後的形式表達。 要求我們針對未知的變數除法作計算,以浮點數的形式返回答案;如果無解,返回-1.0。 題目的原文敘述 測試範例 Example 1: Input: equations = [["a","b"],["b",
題目會給定我們一個輸入陣列connections,和城市的總數目n。 輸入陣列裡面是以pair的方式儲存,(a, b) 分邊代表這條邊的起點和終點。 請問,我們需要改變多少條邊的方向,才能讓每條路徑都指向編號零號的城市( City #0)? 註: 題目還保證,在改變方向之後,一定可以讓每座城
你可能也想看
Google News 追蹤
提問的內容越是清晰,強者、聰明人越能在短時間內做判斷、給出精準的建議,他們會對你產生「好印象」,認定你是「積極」的人,有機會、好人脈會不自覺地想引薦給你
Thumbnail
題目敘述 Combination Sum II_Leetcode #40 給定一個整數陣列candidates 和 目標值target。 每個陣列元素只能選擇一次,請問有多少種組合方法,可以使得組合數總和 = target? 請把滿足組合數總和 = target的組合方法以陣列的形式返回答案
Thumbnail
這篇文章討論了從二維整數陣列中挖掘金礦的問題。文章使用DFS模擬N4走法來解決問題,並提供了時間複雜度和空間複雜度的分析。這將有助於瞭解如何從地圖中挖取最多金礦。文章中提到了相關的關鍵知識點和參考資料。
Thumbnail
題目敘述 題目會給定一顆二元樹的根結點, 要求我們在指定的層樹d,插入新的一層,節點值為v。 原本的左、右子樹,就成為新的那一層的左子樹、右子樹。 題目的原文敘述 測試範例 Example 1: Input: root = [4,2,6,3,1,5], val = 1, depth =
Thumbnail
這篇文章,會帶著大家複習以前學過的DFS框架 結合樹型DP, 並且以路徑和Path Sum的概念與應用為核心, 貫穿一些相關聯的題目,透過框架複現來幫助讀者理解這個演算法框架。 DFS 深度優先搜索框架 def dfs( parameter ): if base case or sto
Thumbnail
這篇文章,會帶著大家複習以前學過的DFS + 回溯法框架,並且以回溯法為核心, 貫穿一些相關聯的題目,透過框架複現來幫助讀者理解這個食用的演算法框架。 DFS + 回溯法框架 用途: 展開所有可能的路徑(或者說狀態),並且把符合條件的狀態加入到最終的結果。 def backtrack
提問的內容越是清晰,強者、聰明人越能在短時間內做判斷、給出精準的建議,他們會對你產生「好印象」,認定你是「積極」的人,有機會、好人脈會不自覺地想引薦給你
Thumbnail
題目敘述 Combination Sum II_Leetcode #40 給定一個整數陣列candidates 和 目標值target。 每個陣列元素只能選擇一次,請問有多少種組合方法,可以使得組合數總和 = target? 請把滿足組合數總和 = target的組合方法以陣列的形式返回答案
Thumbnail
這篇文章討論了從二維整數陣列中挖掘金礦的問題。文章使用DFS模擬N4走法來解決問題,並提供了時間複雜度和空間複雜度的分析。這將有助於瞭解如何從地圖中挖取最多金礦。文章中提到了相關的關鍵知識點和參考資料。
Thumbnail
題目敘述 題目會給定一顆二元樹的根結點, 要求我們在指定的層樹d,插入新的一層,節點值為v。 原本的左、右子樹,就成為新的那一層的左子樹、右子樹。 題目的原文敘述 測試範例 Example 1: Input: root = [4,2,6,3,1,5], val = 1, depth =
Thumbnail
這篇文章,會帶著大家複習以前學過的DFS框架 結合樹型DP, 並且以路徑和Path Sum的概念與應用為核心, 貫穿一些相關聯的題目,透過框架複現來幫助讀者理解這個演算法框架。 DFS 深度優先搜索框架 def dfs( parameter ): if base case or sto
Thumbnail
這篇文章,會帶著大家複習以前學過的DFS + 回溯法框架,並且以回溯法為核心, 貫穿一些相關聯的題目,透過框架複現來幫助讀者理解這個食用的演算法框架。 DFS + 回溯法框架 用途: 展開所有可能的路徑(或者說狀態),並且把符合條件的狀態加入到最終的結果。 def backtrack