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]]
Approach
Java
import java.util.ArrayList;import java.util.Arrays;import java.util.Collections;import java.util.List;import java.util.stream.Collectors;public class Permutations {public static void main(String[] args) {int nums[] = { 1, 2, 3 };List<List<Integer>> res = permute(nums);System.out.println(Arrays.asList(res));}static List<List<Integer>> ans;static void generate(int l, int r, List<Integer> nums) {if (l == r) {List<Integer> list = new ArrayList<Integer>();list.addAll(nums);ans.add(list);} else {for (int i = l; i <= r; i++) {Collections.swap(nums, l,i);generate(l + 1, r, nums);Collections.swap(nums, l,i);}}}static List<List<Integer>> permute(int[] nums) {int n = nums.length;ans = new ArrayList<List<Integer>>();generate(0, n - 1, Arrays.stream(nums).boxed().collect(Collectors.toList()));return ans;}}
C++
#include <bits/stdc++.h>using namespace std;vector<vector<int>> ans;void generate(int l,int r,vector<int> &nums){if(l==r){ans.push_back(nums);}else{for(int i=l;i<=r;i++){swap(nums[l],nums[i]);generate(l+1,r,nums);swap(nums[l],nums[i]);}}}vector<vector<int>> permute(vector<int>& nums){int n=nums.size();ans.clear();generate(0,n-1,nums);return ans;}int main(){vector<int> nums ={1,2,3};vector<vector<int>> res=permute(nums);cout<<"[";for(int i=0;i<res.size();i++){cout<<"[";for(int j=0;j<res[i].size();j++){cout<<res[i][j];if(j!=res[i].size()-1)cout<<",";}cout<<"]";if(i!=res.size()-1)cout<<",";}cout<<"]";}
No comments:
Post a Comment