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

leetcode_47全排列II

1. 题意

给一个含有重复数字的数组,求不重复的排列。

2. 题解

将数组进行排序,当回溯发生的时候,找到下个不重复的元素即可。

class Solution {
public:


void genPerm(std::vector<std::vector<int>> &ans, std::vector<int> &tmp, 
                std::vector<int> &a, std::vector<int> &vis)
{
    int sz = a.size();
    if (tmp.size() == sz) {
        ans.emplace_back( tmp );
        return ;
    }      

    for (int i = 0;i < sz; i++) {
        if (!vis[i] ) {
            vis[i] = 1;
            tmp.push_back(a[i]);
            genPerm(ans, tmp, a, vis);
            tmp.pop_back();
            vis[i] = 0;

            while (i + 1 < sz && a[i + 1] == a[i])
                i++;
        }
    }


    }

    vector<vector<int>> permuteUnique(vector<int>& nums) {

        sort(nums.begin(), nums.end());
        vector<vector<int>> ans;
        vector<int> vis(nums.size(), 0);
        vector<int> tmp;

        genPerm(ans, tmp, nums, vis);

        return ans;
    }
};

http://www.kler.cn/a/537058.html

相关文章:

  • PHP之hyperf学习笔记
  • 【centOS】搭建公司内网git环境-GitLab 社区版(GitLab CE)
  • 换电脑了如何快速导出vscode里的插件
  • 从 .NET Framework 升级到 .NET 8 后 SignalR 问题处理与解决方案
  • 32.日常算法
  • 【LeetCode】day15 142.环形链表II
  • 【Pytorch】nn.RNN、nn.LSTM 和 nn.GRU的输入和输出形状
  • 荣耀内置的远程控制怎样用?荣耀如何远程控制其他品牌的手机?
  • 【GitHub】GitHub 2FA 双因素认证 ( 使用 Microsoft Authenticator 应用进行二次验证 )
  • 121,【5】 buuctf web [RoarCTF 2019] Easy Calc
  • 树莓集团双流布局,元宇宙产业园点亮科技之光
  • 如何确保爬虫不会违反平台规则?
  • 为什么关系模型不叫表模型
  • Redis基础--常用数据结构的命令及底层编码
  • DeepSeek Window本地私有化部署
  • Ubuntu Crontab 日志在什么位置 ?
  • 京东java面试流程_java京东社招面试经历
  • ES6 迭代器 (`Iterator`)使用总结
  • flutter Selector 使用
  • StarSpider 星蛛 爬虫 Java框架 可以实现 lazy爬取 实现 HTML 文件的编译,子标签缓存等操作
  • 前端导出pdf,所见即所得
  • 芯科科技的BG22L和BG24L带来应用优化的超低功耗蓝牙®连接
  • Spring Boot 有哪些优点
  • 【Redis】事务因WATCH的键被修改而失败 事务队列中的操作被自动丢弃 UNWATCH的应用场景
  • 视频编辑质量评价的开源项目 VE-Bench 介绍
  • 使用deepseek快速创作ppt