46 permutation

class Solution {
    public List<List<Integer>> permute(int[] nums) {
        List<List<Integer>> ans = new ArrayList<List<Integer>>();
        helper(nums, 0, ans, new ArrayList<Integer>());
        return ans;
    }
    private void helper(int[] nums, int idx, List<List<Integer>> ans, ArrayList<Integer> path){
        if(idx == nums.length) {
            ans.add(new ArrayList<Integer>(path));
            return;
        }
        for(int i = idx; i < nums.length; i++){
            path.add(nums[i]);
            swap(nums, i, idx);
            helper(nums, idx+1, ans, path);
            swap(nums, i, idx);
            path.remove(path.size()-1);
        }
        return;
    }
    
    private void swap(int[] nums, int a, int b){
        int tmp = nums[a];
        nums[a] = nums[b];
        nums[b] = tmp;
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容