回溯
public List<List<Integer>> permute(int[] nums) { List<List<Integer>> result = new ArrayList<>(); boolean[] visited = new boolean[nums.length]; backtrack(result,nums,new ArrayList<Integer>(),visited); return result; } private void backtrack(List<List<Integer>> result, int[] nums, ArrayList<Integer> temp, boolean[] visited) { if(temp.size() == nums.length){ result.add(new ArrayList<>(temp)); return; } for(int i = 0;i<nums.length;i++){ if(visited[i]) continue; visited[i] = true; temp.add(nums[i]); backtrack(result, nums, temp, visited); visited[i] = false; temp.remove(temp.size()-1); } }
一段时间不刷题就会变得生疏,,这是第二次做了,还是没能自己做出来。。。
难过。
回溯有什么难的啊,,,
动点脑子,,
——2020.7.30