leetcode 第46題和第47題 全排列問題

2021-08-18 10:10:01 字數 962 閱讀 2674

leetcode 第46題和第47題 都是求乙個給定陣列中的全排列問題,不同之處在於47題中陣列的元素可以重複。

這也是乙個遞迴問題。對於陣列中的每個元素,它的全排列就等於它本身加上除它以外所有的全排。所以只要這樣依次計算全排列就行。

class

solution

private

void permuteaux(int nums,int

index,listst)

for(int i=0;iif(used[i]) continue;

st.add(nums[i]);

used[i] = true;

permuteaux(nums,index+1,st);

used[i] = false;

st.remove(st.size()-1);

}return;

}}

這也是乙個遞迴問題。解題思路與46圖題基本一致,但是卻必須做出一些,改變,首先必須使得陣列有序,在對陣列中的每個元素進行全排列的時候,如果該元素與前乙個元素相同,且前面乙個元素已經完成了全排列,則跳過這個元素。

class

solution

private

void permuteaux(int nums,int

index,listst)

for(int i=0;iif(used[i]) continue;

if(i>0 &&nums[i-1]==nums[i] && !used[i-1]) continue;

st.add(nums[i]);

used[i] = true;

permuteaux(nums,index+1,st);

used[i] = false;

st.remove(st.size()-1);

}return;

}}

LeetCode第46題 全排列

給定乙個 沒有重複 數字的序列,返回其所有可能的全排列。示例 輸入 1,2,3 輸出 1,2,3 1,3,2 2,1,3 2,3,1 3,1,2 3,2,1 全排列問題都可以用dfs 深度優先遍歷 解決,不過這個題是帶權型別的 自稱 所以需要標記位。大致畫了個圖如下 param nums 傳入陣列 ...

LeetCode第4題C語言題解

description there are two sorted arraysnums1andnums2of size m and n respectively.find the median of the two sorted arrays.the overall run time complex...

全排列(力扣第46題)

題目 給定乙個 沒有重複數字的序列,返回其所有可能的全排列。示例 輸入 1,2,3 輸出 1,2,3 1,3,2 2,1,3 2,3,1 3,1,2 3,2,1 分析 求給定一組數的全排列,也就是排列組合問題,所以屬於backtracking 回溯 問題,通過dfs解決,只不過需要注意的是,我們一般...