1. 程式人生 > 實用技巧 >leetcode ——46.全排列

leetcode ——46.全排列

回溯

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