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

我的前方是万里征途,星辰大海!!
原文地址:https://www.cnblogs.com/taoyuxin/p/13405030.html