Skip to content

Latest commit

 

History

History
79 lines (57 loc) · 1.41 KB

20210414.md

File metadata and controls

79 lines (57 loc) · 1.41 KB

Algorithm

46. Permutations

Description

Given an array nums of distinct integers, return all the possible permutations. You can return the answer in any order.

Example 1:

Input: nums = [1,2,3]
Output: [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]

Example 2:

Input: nums = [0,1]
Output: [[0,1],[1,0]]

Example 3:

Input: nums = [1]
Output: [[1]]

Constraints:

  • 1 <= nums.length <= 6
  • -10 <= nums[i] <= 10
  • All the integers of nums are unique.

Solution

class Solution {
    public List<List<Integer>> permute(int[] nums) {
        List<List<Integer>> lists = new ArrayList<List<Integer>>();
        helper(nums, 0, lists);
        return lists;
    }
    private void helper(int[] nums, int start, List<List<Integer>> lists){
        if(start==nums.length){
            List<Integer> temp = new ArrayList<>();
            for(int num:nums){
                temp.add(num);
            }
            lists.add(temp);
        }else{
            for(int i=start;i<nums.length;i++){
                swap(nums, i, start);
                helper(nums, start+1, lists);
                swap(nums, i, start);
            }
        }
    }
    public static void swap(int[] nums, int start, int end){
        int temp = nums[start];
        nums[start] = nums[end];
        nums[end] = temp;
    }
}

Discuss

Review

Tip

Share