Leetcode 46 全排列(中等) 回溯演算法

2022-10-08 04:21:11 字數 712 閱讀 7696

labuladong講解

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]]

思路:使用回溯演算法框架,遍歷所有可能性,用used記錄已經取走的數字

class

solution

//路徑:記錄在 path 中

//選擇列表:nums 中不存在於 path 的那些元素(used[i] 為 false)

//結束條件:nums 中的元素全都在 path **現

void dp(vector& nums, vector& used, vector&path)

for(int i=0;ii)

//做選擇

used[i]=true

; path.push_back(nums[i]);

//進入下一層決策樹

dp(nums,used,path);

//取消選擇

path.pop_back();

used[i]=false

; }

}vector

int>>ret;

};

leetcode 46 全排列(回溯)

給定乙個沒有重複數字的序列,返回其所有可能的全排列。示例 輸入 1,2,3 輸出 1,2,3 1,3,2 2,1,3 2,3,1 3,1,2 3,2,1 核心的遞迴部分如下 for begin in range 0 n for i in range begin,n swap nums begin n...

LeetCode 46 全排列(回溯)

給定乙個沒有重複數字的序列,返回其所有可能的全排列。示例 輸入 1,2,3 輸出 1,2,3 1,3,2 2,1,3 2,3,1 3,1,2 3,2,1 類似題目 leetcode 996.正方形陣列的數目 回溯 剪枝 class solution void bt vector int nums,i...

演算法 leetcode46全排列

leetcode 全排列 給定乙個 沒有重複 數字的序列,返回其所有可能的全排列。示例 輸入 1 2,3 輸出 1,2,3 1,3,2 2,1,3 2,3,1 3,1,2 3,2,1 這道題我們需要使用回溯的方法來進行求解。那我們回溯法的解體框架是什麼呢,解決乙個回溯問題,實際上就是乙個決策樹的遍歷...