46. Permutations

Given a collection of distinct numbers, return all possible permutations.

For example, [1,2,3] have the following permutations:


Related issue Subset, Subset II, Permutations II, Combination Sum II Combinations

put each number in the beginning of the array, then process the begging+1 as a sub issue.


public class Solution {
    List<List<Integer>> res = new ArrayList<>();
    List<Integer> list = new ArrayList<>();
    public List<List<Integer>> permute(int[] nums) {
        permute_(nums, 0, nums.length-1);

        return res;

    private void permute_(int[] nums, int start, int end){
        if(start == end){
            List<Integer> l = new ArrayList<>();
            for(int v : nums) l.add(v);

        for(int i=start; i<=end; i++){
            swap(nums, i, start);
            permute_(nums, start+1, end);
            swap(nums, i, start);

    private void swap(int[] nums, int l, int r){
        if(r == l) return;
        int t = nums[l];
        nums[l] = nums[r];
        nums[r] = t;

results matching ""

    No results matching ""