LeetCode 47. Permutations II
LeetCode 47. Permutations II (全排列II)
题目
链接
https://leetcode.cn/problems/permutations-ii/
问题描述
给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。
示例
输入:nums = [1,1,2]
输出:
[[1,1,2],
[1,2,1],
[2,1,1]]
提示
1 <= nums.length <= 8
-10 <= nums[i] <= 10
思路
和全排列相同,只需要多设置一个used数组,用于存放是否用过。
复杂度分析
时间复杂度 O(n2)
空间复杂度 O(n)
代码
Java
List<List<Integer>> ans = new LinkedList<>();
LinkedList<Integer> path = new LinkedList<>();
public List<List<Integer>> permuteUnique(int[] nums) {
boolean[] used = new boolean[nums.length];
Arrays.sort(nums);
trace(nums, used);
return ans;
}
public void trace(int[] nums, boolean[] used) {
if (path.size() == nums.length) {
ans.add(new ArrayList<>(path));
return;
}
for (int i = 0; i < nums.length; i++) {
if (i > 0 && nums[i] == nums[i - 1] && used[i - 1] == true) {
continue;
}
if (used[i] == false) {
used[i] = true;
path.add(nums[i]);
trace(nums, used);
path.remove(path.size() - 1);
used[i] = false;
}
}
}
分类:
LeetCode(Java)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧