[100天算法】-全排列 II(day 51)

题目描述

复制代码
给定一个可包含重复数字的序列,返回所有不重复的全排列。

示例:

输入: [1,1,2]
输出:
[
[1,1,2],
[1,2,1],
[2,1,1]
]

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/permutations-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

思路

复杂度分析

  • 时间复杂度:
  • 空间复杂度:

代码

JavaScript Code

复制代码
/**
 * @param {number[]} nums
 * @return {number[][]}
 */
var permuteUnique = function (nums) {
    const backtrack = (nums, path, res, visited) => {
        if (path.length === nums.length) {
            res.push(path);
            return;
        }

        for (let i = 0; i < nums.length; i++) {
            if (
                visited[i] ||
                (i > 0 && nums[i] === nums[i - 1] && visited[i - 1])
            )
                continue;
            visited[i] = true;
            path.push(nums[i]);
            backtrack(nums, [...path], res, visited);
            path.pop();
            visited[i] = false;
        }
    };

    const res = [];
    nums.sort((a, b) => a - b);
    backtrack(nums, [], res, Array(nums.length));
    return res;
};
相关推荐
房开民1 天前
可变参数模板
java·开发语言·算法
不知名的忻1 天前
Morris遍历(力扣第99题)
java·算法·leetcode·morris遍历
状元岐1 天前
C#反射从入门到精通
java·javascript·算法
_深海凉_1 天前
LeetCode热题100-除了自身以外数组的乘积
数据结构·算法·leetcode
Kk.08021 天前
项目《基于Linux下的mybash命令解释器》(一)
前端·javascript·算法
SteveSenna1 天前
Trossen Arm MuJoCo自定义1:改变目标物体
人工智能·学习·算法·机器人
yong99901 天前
IHAOAVOA:天鹰优化算法与非洲秃鹫优化算法的混合算法(Matlab实现)
开发语言·算法·matlab
米粒11 天前
力扣算法刷题 Day 42(股票问题总结)
算法·leetcode·职场和发展
浅念-1 天前
从LeetCode入门位运算:常见技巧与实战题目全解析
数据结构·数据库·c++·笔记·算法·leetcode·牛客
CoovallyAIHub1 天前
无人机拍叶片→AI找缺陷:CEA-DETR改进RT-DETR做风电叶片表面缺陷检测,mAP50达89.4%
算法·架构·github