全排列(有重複數)

2021-10-21 10:27:00 字數 760 閱讀 8251

題目鏈結

給定乙個可包含重複數字的序列 nums ,按任意順序 返回所有不重複的全排列。

示例 1:

輸入:nums = [1,1,2]

輸出:[[1,1,2],

[1,2,1],

[2,1,1]]

示例 2:

輸入:nums = [1,2,3]

輸出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]

1 <= nums.length <= 8

-10 <= nums[i] <= 10

1.返回值和引數:輸入排列陣列和記錄陣列中的元素是否被使用的陣列

2.單層遞迴邏輯:遍歷陣列每次取乙個元素新增到path,但是要取沒有使用過的元素,且不是上一層用過的相同的數

3.終止條件:當path大小等於nums的大小則表示獲得了乙個結果,將其新增到結果集然後退出當前遞迴層

vectorint>> result;

vector<

int> path;

void

backtrace

(vector<

int>

& nums, vector<

bool

>

& used)

} vectorint>>

permuteunique

(vector<

int>

& nums)

全排列(無重複數)

題目鏈結 給定乙個 沒有重複 數字的序列,返回其所有可能的全排列。示例 輸入 1,2,3 輸出 1,2,3 1,3,2 2,1,3 2,3,1 3,1,2 3,2,1 1.返回值和引數 輸入排列陣列和記錄陣列中的元素是否被使用的陣列 2.單層遞迴邏輯 遍歷陣列每次取乙個元素新增到path,但是要取沒...

46 全排列(無重複數字)

這是無重複數字的全排列。注意遞迴函式中的迴圈 迴圈起始位置 和used陣列的使用 class solution void dfs int nums for int i 0 i還學習了交換法,不用申請used陣列。但是看了看,好像空間也沒節省多少啊。可能是因為為了轉換成list要將int轉換成inte...

DFS有重複數字的全排列

此文寫於2017 11 25 全排列就不說了,乙個next permutation就解決了。但是有重複的數字還能用基本的全排列嗎?答案顯然是不能的,我們需要一些語句來幫助我們避免重複。讓我們結合 來分析 有重複的全排列 include include using namespace std cons...