用java编写给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1: 输入:nums = [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] 示例 2: 输入:nums = [0,1] 输出:[[0,1],[1,0]] 示例 3: 输入:nums = [1] 输出:[[1]] 提示: 1 <= nums.length <= 6 -10 <= nums[i] <= 10 nums 中的所有整数 互不相同
时间: 2023-05-19 13:00:37 浏览: 187
js代码-给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
以下是用 Java 编写的给定一个不含重复数字的数组 nums,返回其所有可能的全排列的代码:
```
class Solution {
public List<List<Integer>> permute(int[] nums) {
List<List<Integer>> res = new ArrayList<>();
backtrack(res, new ArrayList<>(), nums);
return res;
}
private void backtrack(List<List<Integer>> res, List<Integer> temp, int[] nums) {
if (temp.size() == nums.length) {
res.add(new ArrayList<>(temp));
} else {
for (int i = 0; i < nums.length; i++) {
if (temp.contains(nums[i])) {
continue;
}
temp.add(nums[i]);
backtrack(res, temp, nums);
temp.remove(temp.size() - 1);
}
}
}
}
```
这个算法的时间复杂度为 O(n!),因为它需要生成 n! 个排列。
阅读全文