46-全排列(回溯算法)

題目

給定一個不含重復數字的數組 nums ,返回其 所有可能的全排列 。你可以 按任意順序 返回答案。
示例 1:
輸入:nums = [1,2,3]
輸出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
示例 2:
輸入:nums = [0,1]
輸出:[[0,1],[1,0]]
示例 3:
輸入:nums = [1]
輸出:[[1]]
提示:
1 <= nums.length <= 6
-10 <= nums[i] <= 10
nums 中的所有整數 互不相同

分析

回溯算法框架:

路徑列表
void backtrack(選擇列表,路徑) {if 路徑 到達終點:路徑列表.add(路徑)returnfor 選擇 in 選擇列表:if 選擇 不合格:continue //進行下一個選擇路徑.add(選擇)backtrack(選擇列表,路徑)路徑.pop(選擇) //重新進行下一個選擇
}

C++代碼

class Solution {
private:vector <vector<int>> results;void backtrack(vector<int> nums, vector<bool> visited, vector<int> trace) {if(trace.size()==nums.size()){results.push_back(trace);return;}for (int i = 0; i < nums.size(); i++) {if (visited[i])continue;trace.push_back(nums[i]);visited[i] = true;backtrack(nums, visited, trace);trace.pop_back();visited[i] = false;}}public:vector <vector<int>> permute(vector<int> &nums) {vector<int> trace;vector<bool> visited(nums.size(), false);backtrack(nums, visited, trace);return results;}
};

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

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

相關文章

商業銀行移動支付發展探析

一、支付交換標準的迭代      銀行卡支付交換標準基于ISO 8583-1987《產生報文的金融交易卡交換報文規范》為發展基礎&#xff0c; 經過30年的產品及應用變革&#xff0c; 支撐交換標準整體框架的數據格式日益顯現其弊端。新型與傳統業務交織&#xff0c; 衍生出多個技術標…

提升智能客服機器人的語義理解能力:理解用戶的語義和意圖

智能客服機器人的發展已經成為現代服務業的一大亮點。它們不僅能夠提供724小時不間斷的服務&#xff0c;而且能夠處理大量的用戶請求&#xff0c;大大提高了服務效率。然而&#xff0c;盡管智能客服機器人的技術已經取得了顯著的進步&#xff0c;但其語義理解能力仍有待提高。為…

List去除重復數據的五種方式

1、使用 LinkedHashSet 刪除 arraylist 中的重復數據 LinkedHashSet 是在一個 ArrayList 刪除重復數據的最佳方法。LinkedHashSet 在內部完成兩件事&#xff1a; 刪除重復數據 保持添加到其中的數據的順序 Java 示例使用 LinkedHashSet 刪除 arraylist 中的重復項。在給定的示例…

【Linux雜貨鋪】調試工具gdb的使用

目錄 &#x1f308;前言&#x1f308; &#x1f4c1;背景介紹 &#x1f4c1; 使用 list [行號] / [函數名] run/r break/b [行號] / [函數名] info break disable break enable break delete break [斷點編號] next/n step/s continue/c finish print/p [變量…

06 vim工具

目錄 概念模式基本操作配置 1. 概念 vim是一個歷史悠久的,多模式的編輯器&#xff0c;是vi的升級版。和ide不同&#xff0c;編輯器僅能編寫文本&#xff0c;不能運行代碼&#xff0c;現階段的代碼編譯的各個過程會分開按步驟執行 2. 模式 vim有很多種模式&#xff0c;想要編…

方格分割644--2017藍橋杯

1.用dfs解決&#xff0c;首先這題的方格圖形就很像一個走迷宮的類型&#xff0c;迷宮想到dfs&#xff0c;最中心點視為起點&#xff0c;起點有兩個小人在這個方格里面對稱行動&#xff0c;直到走出迷宮&#xff08;一個人走出來了另一個人就也走出來了&#xff0c;而走過的點會…

Vmware Esxi 部署Mac OS虛擬機

Vmware Esxi在創建虛擬機的時候是有Mac OS選項的&#xff0c;但是實際創建時&#xff0c;選擇ISO開機后一直反復引導&#xff0c;是有問題的&#xff0c;原因是需要先解鎖&#xff0c;需要在ESXI主機上修改配置并重啟。 首先找到管理-服務-TSM-ssh&#xff0c;點擊啟動&#x…

華納云:linux中tftp命令使用無效怎么解決

如果在Linux中使用TFTP命令時遇到問題&#xff0c;可能是由于以下幾種原因導致的&#xff0c;你可以嘗試以下方法解決&#xff1a; 檢查TFTP服務器是否正確配置&#xff1a;首先確保你正在連接的TFTP服務器已經正確配置并正在運行。你可以使用網絡工具(如ping命令)檢查與TFTP服…

★【二叉搜索樹(中序遍歷特性)】【 ★遞歸+雙指針】Leetcode 98. 驗證二叉搜索樹

★【二叉搜索樹&#xff08;中序遍歷特性&#xff09;】【 ★遞歸雙指針】Leetcode 98. 驗證二叉搜索樹 二叉搜索樹 98. 驗證二叉搜索樹解法1 笨 中序遞歸遍歷為一個數組 然后判斷數組是不是升序排列就可以★解法2 不使用數組 遞歸法 ---------------&#x1f388;&#x1f38…

【力扣】無重復字符的最長子串,滑動窗口 + 哈希集合

無重復字符的最長子串原題地址 方法一&#xff1a;滑動窗口&#xff08;雙指針&#xff09; 哈希集合 考慮找出字符串s的所有的無重復字符的子串&#xff0c;求出這些子串長度的最大值即可。 使用下標 [left,right] 來維護子串。我們只需要找到每一個 left 對應的所有 righ…

php PhpSpreadsheet 讀取日期變數字問題解決

問題描述&#xff1a; 使用PhpSpreadsheet 讀取表格數據&#xff0c;日期格式讀取后變成數字&#xff0c;如下圖&#xff1a; 解決方案&#xff1a; $cell $sheet->getCell(H . $row)->getValue(); $toTimestamp \PhpOffice\PhpSpreadsheet\Shared\Date::excelToTimes…

騰軒科技傳媒探討網絡整合營銷推廣的策略和效果

在當今高度信息化的商業環境中&#xff0c;整合營銷推廣&#xff08;IMC&#xff09;已經成為了品牌營銷策略的核心。它旨在通過多種渠道和平臺&#xff0c;將一致、連貫的品牌信息傳達給目標受眾&#xff0c;從而增強品牌知名度和忠誠度。騰軒科技傳媒將深入探討整合營銷推廣的…

【airtest】自動化入門教程(一)AirtestIDE

目錄 一、下載與安裝 1、下載 2、安裝 3、打開軟件 二、web自動化配置 1、配置chrome瀏覽器 2、窗口勾選selenium window 三、新建項目&#xff08;web&#xff09; 1、新建一個Airtest項目 2、初始化代碼 3、打開一個網頁 四、恢復默認布局 五、新建項目&#xf…

模擬算法題練習(一)

模擬算法介紹&#xff1a; 模擬算法通過模擬實際情況來解決問題&#xff0c;一般容易理解但是實現起來比較復雜&#xff0c;有很多需要注意的細節&#xff0c;或者是一些所謂很“麻模“的東西。 模擬題一般不涉及太難的算法&#xff0c;一般就是由較多的簡單但是不好處理的部…

【算法】最小生成樹—Prim算法與Kruskal算法

Prim算法和Kruskal算法都是解決最小生成樹問題的經典算法。最小生成樹是原圖的最小連通子圖&#xff0c;它包含原圖的全部結點&#xff0c;且保持圖連通的所有邊代價和最小。一個連通圖可能有多個最小生成樹。 一、Prim算法 含義 Prim算法&#xff0c;也被稱為普里姆算法&…

基于移動端的食堂助餐在線點餐配送系統 uniapp微信小程序

本文從管理員、老人、配送員、食堂商家的功能要求出發&#xff0c;養老助餐管理系統小程序中的功能模塊主要是實現老人、配送員、食堂商家、食堂大廳、預約選座、餐號信息、美食信息、美食訂單、訂單信息、訂單配送、訂單評價、老人食堂、下單信息、飲食分析。經過認真細致的研…

C語言可以干些什么?C語言主要涉及哪些IT領域?

C語言可以干些什么&#xff1f;C語言主要涉及哪些IT領域&#xff1f; 在開始前我有一些資料&#xff0c;是我根據網友給的問題精心整理了一份「C語言的資料從專業入門到高級教程」&#xff0c; 點個關注在評論區回復“888”之后私信回復“888”&#xff0c;全部無償共享給大家…

我在爭什么?

本來想寫一下2024項目部人員該怎么干&#xff0c;還沒有寫出來&#xff0c;大家內部就先動起來。針對現有情況做了分析&#xff1a; 作為項目人員&#xff08;實施&#xff0c;運維&#xff09; 需要有一定自我認識 認識清楚公司要什么&#xff1f; 認識清楚我自己要什么&…

內網安裝redis+部署redis-cluster集群

一、安裝redis redis安裝包下載地址&#xff1a; https://download.redis.io/releases/ 1.1 解壓編譯并創建數據目錄 tar xzvf redis-6.2.10.tar.gz -C /usr/local/ cd /usr/local/ mv redis-6.2.10/ redis cd /usr/local/redis/ make #編譯 …

Springboot整合SSE實現實時消息推送

SSE詳細介紹傳送門&#xff1a;SSE實時消息推送 簡單描述一下SSE推送在實際項目中應用的常見場景 1&#xff0c;項目頁面中有消息通知板塊&#xff0c;當信息有變化時&#xff0c;只有手動刷新頁面&#xff0c;才會看到最新的數據&#xff0c;這里可以采用SSE技術實時推送最新…