47.Permutations 1&2
1.Given a collection of numbers, return all possible permutations.
For example,[1,2,3]
have the following permutations:[1,2,3]
, [1,3,2]
, [2,1,3]
, [2,3,1]
, [3,1,2]
, and [3,2,1]
.
2.
Given a collection of numbers that might contain duplicates, return all possible unique permutations.
For example,[1,1,2]
have the following unique permutations:[1,1,2]
, [1,2,1]
, and [2,1,1]
.
solution:DFS
1 2 3
12 13 21 23 32 31
123 132 213 231 321 312
package leetcode2; import java.util.*; public class Permutations { public static ArrayList<ArrayList<Integer>> permute(int[] num) { ArrayList<ArrayList<Integer>> res=new ArrayList<ArrayList<Integer>>(); ArrayList<Integer> mem =new ArrayList<Integer>(); int deep=0; int length=num.length; boolean visit[]=new boolean[length]; dfs(res,mem,deep,num,visit,length); return res; } public static void dfs(ArrayList<ArrayList<Integer>> res, ArrayList<Integer> mem, int deep, int[] num,boolean[] visit,int l) { // TODO Auto-generated method stub if(deep==l){ if(!res.contains(new ArrayList<Integer>(mem))){ res.add(new ArrayList<Integer>(mem)); } return; } if(deep<l){ for(int i=0;i<l;i++){ if(i>0 && num[i-1] == num[i] && !visit[i-1]) continue; if(!visit[i]){ mem.add(num[i]); visit[i]=true; dfs(res,mem,deep+1,num,visit,l); if(mem.size()>0){ mem.remove(mem.size()-1); visit[i]=false; } } } } if(deep>num.length) return; } public static void main(String[] args) { // TODO Auto-generated method stub int[] a={1,2,3}; System.out.print(permute(a)); } }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步