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.
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;
}
}