其他分享
首页 > 其他分享> > LeetCode 0046 Permutations

LeetCode 0046 Permutations

作者:互联网

原题传送门

1. 题目描述

2. Solution

1、思路分析
思路见 Q39,求排列伪码
P(nums, n):
ans = []
PAux(nums, n, [], ans)
return ans

PAux(nums, cur, ans):
if cur.size() == n:
ans.add(cur)
return

for num in nums:
if cur.contains(num):
continue
cur.add(num)
PAux(nums, n, cur, ans)
cur.remove(cur.size() - 1)

2、代码实现

package Q0099.Q0046Permutations;

import java.util.ArrayList;
import java.util.List;

public class Solution {
    public List<List<Integer>> permute(int[] nums) {
        List<List<Integer>> ans = new ArrayList<>();
        permutationAux(nums, new ArrayList<>(), ans);
        return ans;
    }

    private void permutationAux(int[] nums, List<Integer> cur, List<List<Integer>> ans) {
        if (cur.size() == nums.length) {
            ans.add(new ArrayList<>(cur));
        } else {
            for (int num : nums) {
                if (cur.contains(num)) continue; // element already exists, skip
                cur.add(num);
                permutationAux(nums, cur, ans);
                cur.remove(cur.size() - 1);
            }
        }
    }
}

3、复杂度分析
image.png

标签:cur,nums,Permutations,List,0046,num,ans,LeetCode,size
来源: https://www.cnblogs.com/junstat/p/16070048.html