47. 全排列 II - 力扣(LeetCode)

题目描述

给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。

输入示例

bash 复制代码
nums = [1,1,2]

输出示例

bash 复制代码
[[1,1,2], [1,2,1], [2,1,1]]

解题思路

解题代码

java 复制代码
class Solution {
    List<List<Integer>> result = new ArrayList<>();
    Deque<Integer> path = new ArrayDeque<>();
    public List<List<Integer>> permuteUnique(int[] nums) {
        int n = nums.length;
        boolean[] used = new boolean[n];
        backtrack(nums, used);
        return result;
    }

    public void backtrack(int[] nums, boolean[] used) {
        if(path.size() == nums.length) {
            result.add(new ArrayList<Integer>(path));
            return;
        }
        Set<Integer> set = new HashSet<>();
        for(int i = 0; i < nums.length; i++) {
            if(used[i] == true || set.contains(nums[i])) {
                continue;
            }
            path.addLast(nums[i]);
            set.add(nums[i]);
            used[i] = true;
            backtrack(nums, used);
            used[i] = false;
            path.removeLast();
        }
    }
}
相关推荐
重生之我是Java开发战士3 小时前
【优选算法】模拟算法:替换所有的问号,提莫攻击,N字形变换,外观数列,数青蛙
算法
仟濹4 小时前
算法打卡 day1 (2026-02-06 周四) | 算法: DFS | 1_卡码网98 可达路径 | 2_力扣797_所有可能的路径
算法·leetcode·深度优先
yang)4 小时前
欠采样时的相位倒置问题
算法
历程里程碑4 小时前
Linux20 : IO
linux·c语言·开发语言·数据结构·c++·算法
A尘埃4 小时前
物流公司配送路径动态优化(Q-Learning算法)
算法
天若有情6734 小时前
【自研实战】轻量级ASCII字符串加密算法:从设计到落地(防查岗神器版)
网络·c++·算法·安全·数据安全·加密
DeeplyMind4 小时前
第七章:数据结构大比拼
数据结构·计算机科学·少儿编程·少儿科技读物
元亓亓亓4 小时前
考研408--数据结构--day8--遍历序列&线索二叉树
数据结构·考研·408·线索二叉树
xiaoxue..4 小时前
合并两个升序链表 与 合并k个升序链表
java·javascript·数据结构·链表·面试
啊森要自信4 小时前
CANN ops-cv:AI 硬件端视觉算法推理训练的算子性能调优与实战应用详解
人工智能·算法·cann