当前位置: 首页 > news >正文

回溯 Leetcode 47 全排列II

全排列II

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

Leetcode 47

学习记录自代码随想录

示例 1:
输入:nums = [1,1,2]
输出:
[[1,1,2],
[1,2,1],
[2,1,1]]

示例 2:
输入:nums = [1,2,3]
输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]

提示:
1 <= nums.length <= 8
-10 <= nums[i] <= 10

要点:1.需要两层去重,既要树层去重也要在同一树枝去重;
2.可以只使用used进行树层去重或者单独使用used进行树枝去重,而uset进行树层去重;
3.组合问题和排列问题是在树形结构的叶子节点上收集结果,而子集问题就是取树上所有节点的结果。
4.树层去重相比于树枝去重较高;
在这里插入图片描述
在这里插入图片描述

class Solution {
private:
    vector<int> path;
    vector<vector<int>> result;

    void backtracking(vector<int>& nums, vector<int> used){
        if(path.size() == nums.size()){
            result.push_back(path);
            return;
        }

        unordered_set<int> uset;
        for(int i = 0; i < nums.size(); i++){
            // if(used[i] == 1 || (i > 0 && used[i-1] == 0 && nums[i] == nums[i-1])){
            //     continue;
            // }
            if(used[i] == 1 || uset.find(nums[i]) != uset.end()){
                continue;
            }
            
            uset.insert(nums[i]);
            used[i] = 1;
            path.push_back(nums[i]);
            backtracking(nums, used);
            path.pop_back();
            used[i] = 0;
        }
    }
public:
    vector<vector<int>> permuteUnique(vector<int>& nums) {
        path.clear();
        result.clear();

        // sort(nums.begin(), nums.end());  // 树层去重 要排序
        vector<int> used(nums.size(), 0);
        backtracking(nums, used);
        return result;
    }
};

相关文章:

  • 鸿蒙ArkTs开发WebView问题总结
  • ChatGPT学习第三周
  • SpringBoot 自定义映射规则resultMap association一对一
  • Nacos配置
  • 动态规划--(算法竞赛、蓝桥杯)--二维费用背包
  • 如何学习自然语言处理之语言模型
  • 【投稿优惠|快速见刊】2024年图像,机器学习和人工智能国际会议(ICIMLAI 2024)
  • element-ui附件上传及在线查看详细总结,后续赋源码
  • StarRocks——中信建投基于StarRocks构建统一查询服务平台
  • WPF 【十月的寒流】学习笔记(1):DataGrid过滤
  • Unity将4个纹理图拼接成1个纹理
  • 类型字段定义影响WebApi传值及SqlSugar调用Select创建新对象
  • Vue3修改Element-plus语言与项目国际化
  • Kotlin:协程基础
  • 打造去中心化透明储蓄罐:Solidity智能合约的又一实践
  • FL Studio All Plugins Edition2024中文完整版Win/Mac
  • 【PyTorch模型转换和部署】
  • 【数据结构】周末作业
  • web组态(BY组态)接入流程
  • 4 局域网基础(2)
  • 伊朗港口爆炸最新情况:14死700多伤,大火延烧,调查困难
  • 商务部就海外社交平台上发布从所谓中国“代工厂”低价购买国际知名品牌事答问
  • 解放日报头版:外资汽车产业链布局上海步伐明显加快
  • 继续免费通行!五一假期全国高速公路日均流量约6200万辆
  • 大家聊中国式现代化|彭羽:为国家试制度探新路,推进高水平对外开放
  • 魔都眼·上海车展①|开幕首日:首发首秀近百款新车