• 【算法刷题day29】Leetcode:491.递增子序列 46.全排列 47.全排列 II


    491.递增子序列

    文档链接:[代码随想录]
    题目链接:491.递增子序列

    题目:
    给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是2。

    class Solution {
    private:
        vector<vector<int>> result;
        vector<int> path;
        void backtracking(vector<int>& nums,int index){
            if(path.size() > 1){
                result.push_back(path);
            }
            unordered_set<int> uset;
            for(int i = index; i < nums.size(); i++){
               if((!path.empty() && nums[i] < path.back()) || uset.find(nums[i]) != uset.end()){
                    continue;
               }
               uset.insert(nums[i]);
               path.push_back(nums[i]);
               backtracking(nums,i + 1);
               path.pop_back();
            }
        }
    public:
        vector<vector<int>> findSubsequences(vector<int>& nums) {
            result.clear();
            path.clear();
            backtracking(nums, 0);
            return result;
        }
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    46.全排列

    文档链接:[代码随想录]
    题目链接:46.全排列

    题目:
    给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。

    class Solution {
    private:
        vector<vector<int>> result;
        vector<int> path;
        void backtracking(vector<int>& nums,vector<bool> used){
            if(path.size() == nums.size()){
                result.push_back(path);
                return;
            }
            for(int i = 0; i < nums.size(); i++){
                if(used[i] == true){
                    continue;
                }
                used[i] = true;
                path.push_back(nums[i]);
                backtracking(nums,used);
                path.pop_back();
                used[i] = false;
            }
        }
    public:
        vector<vector<int>> permute(vector<int>& nums) {
            result.clear();
            path.clear();
            vector<bool> used(nums.size(), false);
            backtracking(nums,used);
            return result;
        }
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    47.全排列 II

    文档链接:[代码随想录]
    题目链接:47.全排列 II

    题目:
    给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。
    注意:
    1.区分层次和树枝的区别
    2.非递增,记得排序

    class Solution {
    private:
        vector<vector<int>> result;
        vector<int> path;
        void backtracking(vector<int>& nums,vector<bool>& used){
            if(nums.size() == path.size()){
                result.push_back(path);
                return ;
            }
            for(int i = 0; i < nums.size(); i++){
                if(i > 0 && nums[i] == nums[i -1] && used[i -1] == false){
                    continue;
                }
                if(used[i] == true){
                    continue;
                }
                used[i] = true;
                path.push_back(nums[i]);
                backtracking(nums,used);
                used[i] = false;
                path.pop_back();
            }
        }
    public:
        vector<vector<int>> permuteUnique(vector<int>& nums) {
            result.clear();
            path.clear();
            sort(nums.begin(), nums.end());//别忘了
            vector<bool> used(nums.size(), false);
            backtracking(nums,used);
            return result;
        }
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
  • 相关阅读:
    MySQL——修改数据库和表的字符编码
    MB52字段增加 显示物料库存报表
    GitHub如何删除仓库
    AI是什么? 优漫动游
    2024年5月系统架构设计师综合知识真题
    Bandizip批量解压遇到的问题
    微信3.7版小程序数据分析
    Apollo自动驾驶平台的未来展望:从智能出行到城市管理
    spring cloud之配置中心
    如何自动关闭Oracle数据库服务并重启服务器
  • 原文地址:https://blog.csdn.net/m0_46261292/article/details/137880757