有是一道组合排列题目。继续用DFS。不过这次在LeetCode网页里直接写,更接近面试的纸写。
public class Solution { public ArrayList<ArrayList<Integer>> permute(int[] num) { // Start typing your Java solution below // DO NOT write main() function ArrayList<ArrayList<Integer>> ans = new ArrayList<ArrayList<Integer>>(); int len = num.length; if (len == 0) return ans; boolean[] vis = new boolean[len]; int[] kase = new int[len]; dfs(ans, 0, len, num, kase, vis); return ans; } public void dfs(ArrayList<ArrayList<Integer>> ans, int k, int n, int[] num, int[] kase, boolean[] vis) { if (k == n) { ArrayList<Integer> arr = new ArrayList<Integer>(); for (int i = 0; i < kase.length; i++) { arr.add(kase[i]); } ans.add(arr); return; } else { for (int i = 0; i < num.length; i++) { if (!vis[i]) { kase[k] = num[i]; vis[i] = true; dfs(ans, k+1, n, num, kase, vis); vis[i] = false; } } } } }