代碼隨想錄算法訓練營第25天|回溯

回溯part02

216. 組合總和 III

/*** @param {number} k* @param {number} n* @return {number[][]}*/
var combinationSum3 = function(k, n) {// k個數字相加為n// 只能使用1-9// 每個數字只能使用一次// 不能重復 如 1 2 4 、 4 1 2 不可以let res = [];backtracking(k, n, [], 0, 1, res);return res;
};function backtracking(k, n, path, curSum, startIndex, res){//找到滿足條件的組合if(curSum == n && path.length == k){res.push([...path]);return;}//遞歸邊界//現在取的值相加已經大于目標值了//當前取的個數大于k個了,迭代的深度if(curSum > n || path.length > k) return;//1-9只能用一次,不能重復for(let i = startIndex; i <= 9; i++){//取i這個值path.push(i);backtracking(k, n, path, curSum + i, i + 1, res);//回溯path.pop();}
}

17. 電話號碼的字母組合就是組合的思路

/*** @param {string} digits* @return {string[]}*/
var letterCombinations = function(digits) {//dict[i]表示一個選擇let dict = [[], [], ['a','b','c'], ['d', 'e','f'], ['g','h','i'], ['j','k','l'], ['m','n','o'], ['p','q','r','s'], ['t','u','v'], ['w','x','y','z']];let res = [];let k = digits.length;//表示選擇k個字符let digitsArr = digits.split('').map(Number);backtracking(k, 0, "", res, digitsArr, dict);console.log(digitsArr);return res;
};//1.字符串 2 3
//返回dict[2]和dict[3]中可能的字母組合
//迭代k次,依此從dict[2]、dict[3]中選一個數
// 2 3 如何得到,在digitsArr數組中,用參數cur Nnum表示//k表示需要選擇的字母的個數
//curNum表示當前選擇的是哪一個數字對應的字符
//因為curNum要在digitsArr數組中取,所以用curNumIndex,這樣curNum = digitsArr[curNumIndex]
function backtracking(k, curNumIndex, str, res, digitsArr, dict){if(k === 0) return;//找到滿足條件的組合,數量到了if(str.length === k){res.push(str);return;}//從dict[num]中選取一個字符let curNum = digitsArr[curNumIndex];let curDict = dict[curNum];for(let i = 0; i < curDict.length; i++){//依此從dict[curNum]中選取一個字符//選下一個字符backtracking(k, curNumIndex + 1, str + curDict[i], res, digitsArr, dict);}
}

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

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

相關文章

聯想Y410P跑大模型

安裝vs 2017 查看GPU版本 查看支持哪個版本的cuda windows cuda更新教程_cuda 12.0-CSDN博客 下載并安裝cuda tookit 10.1 CUDA Toolkit 10.1 Update 2 Archive | NVIDIA Developer 找到下載的文件&#xff0c;安裝 參考安裝鏈接 Win10 Vs2017 CUDA10.1安裝&#xff08;避坑…

Due to a bug fix in https://github.com/huggingface/transformers/pull/28687

錯誤&#xff1a; Due to a bug fix in https://github.com/huggingface/transformers/pull/28687 transcription using a multilingual Whisper will default to language detection followed by transcription instead of translation to English.This might be a breaking …

InnoDB存儲引擎非常重要的一個機制--MVCC(多版本并發控制)

Mysql是如何實現隔離性的&#xff1f;&#xff08;鎖MVCC&#xff09; 隔離性是指一個事務內部的操作以及操作的數據對正在進行的其他事務是隔離的&#xff0c;并發執行的各個事務之間不能相互干擾。隔離性可以防止多個事務并發執行時&#xff0c;可能存在交叉執行導致數據的不…

安全U盤和普通U盤有什么區別?

安全U盤&#xff08;也稱為加密U盤或安全閃存驅動器&#xff09;與普通U盤肯定是有一些區別的&#xff0c;從字面意思上來看&#xff0c;就能看出&#xff0c;安全U盤是能夠保護文件數據安全性的&#xff0c;普通U盤沒這一些功能的&#xff0c;可隨意拷貝文件&#xff0c;不防盜…

面試4:c++(數位物聯)

1.const 關健字的作用 定義常量&#xff0c;防止變量被意外修改&#xff0c;增強程序的可讀性和維護性。 可以用于指針&#xff0c;聲明指向常量的指針或常量指針。 2.static關健字的作用 (1)在函數內&#xff0c;用于修飾局部變量&#xff0c;使其生命周期延長到整個程序運行期…

mybatisplus多數據源內置方法報Invalid bound statement (not found)

在用mybatis-plus多數據源時用mapper內置的 selectList(queryWrapper) 查詢數據報org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): 問題是在配置多數據源時用的是SqlSessionFactoryBean&#xff0c;改為MybatisSqlSessionFactoryBean即可…

Python怎么逐行處理文件:深度解析與實用技巧

Python怎么逐行處理文件&#xff1a;深度解析與實用技巧 在Python中&#xff0c;逐行處理文件是一項常見且重要的任務。無論是讀取大型日志文件、分析文本數據還是處理配置文件&#xff0c;逐行讀取都能幫助我們更有效地管理內存并提高處理速度。本文將詳細介紹Python中逐行處…

一文了解UVLED線光源的應用

在機器視覺系統中&#xff0c;光源作為不可或缺的一部分&#xff0c;能夠提高目標成像效果&#xff0c;增強檢測效果。光源的選擇至關重要&#xff0c;選到不合適的會影響成像及檢測效果。針對不同的檢測對象,不同的形狀光源應運而生。我們來看看最UVLED線光源。 下面以CCS的光…

某紅書旋轉滑塊驗證碼分析與協議算法實現

文章目錄 1. 寫在前面2. 接口分析3. 驗證軌跡4. 算法還原【??作者主頁】:吳秋霖 【??作者介紹】:擅長爬蟲與JS加密逆向分析!Python領域優質創作者、CSDN博客專家、阿里云博客專家、華為云享專家。一路走來長期堅守并致力于Python與爬蟲領域研究與開發工作! 【??作者推…

zoomeye api報錯 request invalid, validate usage and try again

項目場景&#xff1a; 調用zoomeye的api接口進行數據拿取 問題描述 之前接口一直通著今天突然報錯&#xff0c;以下為源代碼 pip install zoomeye from zoomeye.sdk import ZoomEye zm ZoomEye(api_key"34A8B452-D874-C63E0-8471-F3D4f89766f") zm.dork_search(a…

圖片像素縮放,支持個性化自定義與精準比例調整,讓圖像處理更輕松便捷!

圖片已經成為我們生活中不可或缺的一部分。無論是社交媒體的分享&#xff0c;還是工作文檔的編輯&#xff0c;圖片都扮演著至關重要的角色。然而&#xff0c;你是否曾經遇到過這樣的問題&#xff1a;一張高清大圖在上傳時卻受限于平臺的大小要求&#xff0c;或者一張小圖需要放…

Spring MVC 源碼分析之 DispatcherServlet#processDispatchResult方法

前言&#xff1a; 前面的篇章我們分析了 Spring MVC 工作流程中的 HandlerMapping、HandlerAdapter 的適配過程、攔截器的工作流程&#xff0c;以及處理業務請求的過程&#xff0c;本篇我們分析一下處理完業務解析視圖的方法&#xff0c;也就是 DispatcherServlet#processDisp…

提高篇(二):高級繪圖技巧:在Processing中創造精美圖形

提高篇(二):高級繪圖技巧:在Processing中創造精美圖形 引言 Processing不僅是一種編程語言,更是一個用于創意編程的強大工具。掌握高級繪圖技巧,可以讓你在藝術創作中如虎添翼。在本篇文章中,我們將探索貝塞爾曲線、樣條曲線、自定義形狀、圖形變換等高級繪圖技術,幫助…

tkinter+火山引擎+python實現語音識別聊天機器人

想要做一款能通過語音識別來聊天的智能機器人,首先需要能通過麥克風錄制語音進行識別轉換成文字,將文字發送給機器人得到聊天結果,并能將返回的文字轉換成語音進行合成,之后再通過本地播放語音實現語音交互。 架構: 實現步驟 一、本地錄音 本地錄音可以通過pyAudio庫實…

2024-06-05-記一次cnvd滲透

前言&#xff1a;挖src挖郁悶了&#xff0c;閑來無事選擇挖一個cnvd來練練手&#xff0c;本次的漏洞都沒啥難度&#xff0c;企查查資產過了5000萬 說一下cnvd證書的下放標準 對于中危及中危以上通用型漏洞&#xff08;CVSS2.0基準評分超過4.0分&#xff09;&#xff0c;以及涉…

Scaling vision Transformer 論文理解

Scaling vision Transformer 論文理解 1. 摘要2. 一些主要結論小結2.1 few shot transfer learning2.2 Pareto-front3. 討論3.1 Limitations3.2 社會作用4. 文章結論參考資料1. 摘要 Attention-based neural networks such as the Vision Transformer (ViT) have recently att…

valgrind-內存泄漏定位工具

1、前言 valgirnd 是一套開放源代碼的動態調試工具集合。能夠檢測內存管理錯誤&#xff0c;線程BUG等。valgirnd是由內核以及基于內核的其他調試工具組成。內核類似于一個框架&#xff0c;它模擬了一個cpu的環境&#xff0c;并提供服務給其他工具使用。而其他工具則類似于插件…

紅酒:紅酒保存中的光照與避免陽光直射

在紅酒保存中&#xff0c;光照是一個常常被忽視的因素。光照對紅酒的影響是不可小覷的&#xff0c;因為陽光中的紫外線會加速紅酒的氧化&#xff0c;導致其口感和品質的下降。因此&#xff0c;在保存云倉酒莊雷盛紅酒時&#xff0c;應特別注意避免陽光直射。 陽光直射對紅酒的影…

企業代碼簽名證書1300元

隨著手機和電腦等設備的普及&#xff0c;越來越多的開發者進入軟件行業&#xff0c;為了軟件的安全性、完整性和可信度&#xff0c;開發者往往會使用由正規CA認證機構頒發的代碼簽名證書對軟件代碼進行數字簽名&#xff0c;來標識軟件的來源和軟件開發者的真實身份。今天就隨SS…

AGI時代下,計算機專業出身的程序員該何去何從?

Easy&#xff1a;單獨開個貼說一下吧。 如果你計算機、軟件工程、通信、電子、網絡等相關專業本科畢業&#xff0c;也考慮前后端/測試崗&#xff0c;戳 技術大廠&#xff0c;6險1金&#xff0c;待遇不錯。 提前說明&#xff0c;一切以古代思維對AGI時代的推演&#xff0c;都是可…