216. 組合總和 III(力扣LeetCode)

文章目錄

  • 216. 組合總和 III
    • 回溯算法

216. 組合總和 III

找出所有相加之和為 n 的 k 個數的組合,且滿足下列條件:

  • 只使用數字1到9
  • 每個數字 最多使用一次
    返回 所有可能的有效組合的列表 。該列表不能包含相同的組合兩次,組合可以以任何順序返回。

示例 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]范圍內使用4個不同的數字,我們可以得到的最小和是1+2+3+4 = 10,因為10 > 1,沒有有效的組合。

提示:

  • 2 <= k <= 9
  • 1 <= n <= 60

回溯算法

class Solution {
public:// 主函數,調用回溯函數并返回結果vector<vector<int>> combinationSum3(int k, int n) {backtracking(k, n, 0, 1);return result;}private:vector<vector<int>> result; // 存儲所有符合條件的組合vector<int> path; // 當前的組合// 回溯函數void backtracking(int k, int n, int sum, int start) {// 如果當前的數字和超過了n,直接返回if (sum > n)return;// 如果路徑中的數字數量達到了kif (path.size() == k) {// 并且這些數字的和恰好等于nif (sum == n)result.push_back(path); // 將其添加到結果集中return; // 返回上一層}// 循環從start開始到9// 減去 (k - path.size()) + 1 是為了保證有足夠的數字可以選擇for (int i = start; i <= 9 - (k - path.size()) + 1; i++) {path.push_back(i); // 把當前數字加入到當前路徑sum += i; // 更新當前數字之和// 繼續回溯,尋找下一個數字,起始數字是當前數字加1backtracking(k, n, sum, i + 1); path.pop_back(); // 回溯,將當前數字從路徑移除sum -= i; // 更新當前數字之和}// 函數返回到上一層調用}
};

這段代碼是一個經典的回溯算法案例,它通過遞歸和回溯來尋找所有可能的數字組合。算法逐步構建每個可能的組合,并且在遞歸的每一層中,都會檢查當前的組合是否滿足條件。如果條件滿足,它會將組合加入到最終的結果集中;如果不滿足,它會回溯到上一層繼續嘗試其他的數字。通過這種方式,算法能夠找到所有符合題目要求的組合。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/717749.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/717749.shtml
英文地址,請注明出處:http://en.pswp.cn/news/717749.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Electron通過預加載腳本從渲染器訪問Node.js

問題&#xff1a;如何實現輸出Electron的版本號和它的依賴項到你的web頁面上&#xff1f; 答案&#xff1a;在主進程通過Node的全局 process 對象訪問這個信息是微不足道的。 然而&#xff0c;你不能直接在主進程中編輯DOM&#xff0c;因為它無法訪問渲染器 文檔 上下文。 它們…

【軟考】數據庫的三級模式

目錄 一、概念1.1 說明1.2 數據庫系統體系結構圖 二、外模式三、概念模式四、內模式 一、概念 1.1 說明 1.數據的存儲結構各不相同&#xff0c;但體系結構基本上具有相同的特征&#xff0c;采用三級模式和兩級鏡像 2.數據庫系統設計員可以在視圖層、邏輯層和物理層對數據進行抽…

matplotlib散點圖

matplotlib散點圖 假設通過爬蟲你獲取到了北京2016年3, 10月份每天白天的最高氣溫(分別位于列表a, b), 那么此時如何尋找出氣溫和隨時間(天)變化的某種規律? from matplotlib import pyplot as pltx_3 range(1, 32) x_10 range(51, 82)y_3 [11,17,16,11,12,11,12,6,6,7,8…

試手一下CameraX(APP)

書接上回。 首先還是看谷歌的官方文檔&#xff1a; https://developer.android.com/media/camera/camerax?hlzh-cn https://developer.android.com/codelabs/camerax-getting-started?hlzh-cn#1 注&#xff1a;這里大部分內容也來自谷歌文檔。 官方文檔用的是Kotlin&…

常用的字符字符串的讀取方法(C / C++)

一、字符 1、讀取單個字符&#xff1a;直接讀取 //輸入a //讀取 char x; scanf("%c",&x); 2、讀取帶空格的字符 h h h 按格式書寫格式化字符串即可 char a,b,c; scanf("%c %c %c",&a,&b,&c); 3、 處理字符間的換行符 假設要讀取以…

Day14:信息打點-主機架構蜜罐識別WAF識別端口掃描協議識別服務安全

目錄 Web服務器&應用服務器差異性 WAF防火墻&安全防護&識別技術 蜜罐平臺&安全防護&識別技術 思維導圖 章節知識點 Web&#xff1a;語言/CMS/中間件/數據庫/系統/WAF等 系統&#xff1a;操作系統/端口服務/網絡環境/防火墻等 應用&#xff1a;APP對象/…

小程序圖形:echarts-weixin 入門使用

去官網下載整個項目&#xff1a; https://github.com/ecomfe/echarts-for-weixin 拷貝ec-canvs文件夾到小程序里面 index.js里面的寫法 import * as echarts from "../../components/ec-canvas/echarts" const app getApp(); function initChart(canvas, width, h…

Vscode 使用SSH遠程連接樹莓派的教程(解決卡在Downloading with wget)

配置Vscode Remote SSH 安裝OpenSSH 打開Windows開始頁面&#xff0c;直接進行搜索PowerShell&#xff0c;打開第一個Windows PowerShell&#xff0c;點擊以管理員身份運行 輸入指令 Get-WindowsCapability -Online | ? Name -like OpenSSH* 我是已經安裝好了&#xff0c;…

學會玩游戲,智能究竟從何而來?

最近在讀梅拉妮米歇爾《AI 3.0》第三部分第九章&#xff0c;談到學會玩游戲&#xff0c;智能究竟從何而來&#xff1f; 作者: [美] 梅拉妮米歇爾 出版社: 四川科學技術出版社湛廬 原作名: Artificial Intelligence: A Guide for Thinking Humans 譯者: 王飛躍 / 李玉珂 / 王曉…

基于springboot實現計算機類考研交流平臺系統項目【項目源碼+論文說明】

基于springboot實現計算機類考研交流平臺系統演示 摘要 高校的大學生考研是繼高校的高等教育更上一層的表現形式&#xff0c;教育的發展是我們社會的根本&#xff0c;那么信息技術的發展又是改變我們生活的重要因素&#xff0c;生活當中各種各樣的場景都存在著信息技術的發展。…

程序員超強大腦——更好地解決編程問題(二)

概念機器 概念機器是計算機的抽象表征&#xff0c;可以借此分析計算機執行的操作。 程序員不僅經常借助概念機器推理計算機的運行方式&#xff0c;而且往往用它來分析代碼。例如&#xff0c;雖然并不存在能夠出存儲數值的實體&#xff0c;但程序員還是會將變量描述為“保存”…

Debezium發布歷史163

原文地址&#xff1a; https://debezium.io/blog/2023/09/23/flink-spark-online-learning/ 歡迎關注留言&#xff0c;我是收集整理小能手&#xff0c;工具翻譯&#xff0c;僅供參考&#xff0c;筆芯筆芯. Online machine learning with the data streams from the database …

SpringBlade CVE-2022-27360 export-user SQL 注入漏洞分析

漏洞描述 SpringBlade是一個基于Spring Cloud和Spring Boot的開發框架&#xff0c;旨在簡化和加速微服務架構的開發過程。它提供了一系列開箱即用的功能和組件&#xff0c;幫助開發人員快速構建高效可靠的微服務應用。該產品/api/blade-user/export-user接口存在SQL注入。 漏…

Java - List集合與Array數組的相互轉換

一、List 轉 Array 使用集合轉數組的方法&#xff0c;必須使用集合的 toArray(T[] array)&#xff0c;傳入的是類型完全一樣的數組&#xff0c;大小就是 list.size() public static void main(String[] args) throws Exception {List<String> list new ArrayList<S…

無處不在的智慧:探索嵌入式系統的奇妙

無處不在的智慧&#xff1a;探索嵌入式系統的奇妙 嵌入式系統作為當今科技領域中無處不在的一種技術&#xff0c;其奇妙之處正在逐步被揭示和探索。從智能家居到智能穿戴設備&#xff0c;從工業自動化到醫療健康&#xff0c;嵌入式系統已經深入到我們生活和工作的方方面面&…

分布式ID生成策略-雪花算法Snowflake

分布式ID生成策略-雪花算法Snowflake 一、其他分布式ID策略1.UUID2.數據庫自增與優化2.1 優化1 - 共用id自增表2.2 優化2 - 分段獲取id 3.Reids的incr和incrby 二、雪花算法Snowflake1.雪花算法的定義2.基礎雪花算法源碼解讀3.并發1000測試4.如何設置機房和機器id4.雪花算法時鐘…

【misc | CTF】BUUCTF 二維碼

天命&#xff1a;這題使用到腳本暴力破解壓縮包文件里面的密碼&#xff0c;還是比較有意思的 一開始是一個二維碼&#xff0c;掃碼進去有一個假flag 扔進圖片隱寫工具&#xff0c;啥也沒有&#xff0c;都是同一個二維碼 使用工具&#xff1a;foremost&#xff0c;直接分離圖片&…

【詳識JAVA語言】抽象類和接口

抽象類 抽象類概念 在面向對象的概念中&#xff0c;所有的對象都是通過類來描繪的&#xff0c;但是反過來&#xff0c;并不是所有的類都是用來描繪對象的&#xff0c;如果 一個類中沒有包含足夠的信息來描繪一個具體的對象&#xff0c;這樣的類就是抽象類。 比如&#xff1a;…

水印相機小程序源碼

水印相機前端源碼&#xff0c;本程序無需后端&#xff0c;前端直接導入即可&#xff0c;沒有添加流量主功能&#xff0c;大家開通后自行添加 源碼搜索&#xff1a;源碼軟件庫 注意小程序后臺的隱私權限設置&#xff0c;前端需要授權才可使用 真實時間地址拍照記錄&#xff0c…

Endnote x9 最快方法批量導入.enw格式文件

按照網上看到的一個方法直接選中所有enw批量拖拽到 All references 附件不行啊&#xff0c; 以為只能寫bat腳本方式了 經過一番嘗試&#xff0c;驚人的發現拖到下面這個符號的地方就行了&#xff01;&#xff01;&#xff01; 如果不成功的話&#xff0c;可能&#xff1a; 我…