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;
    }
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容