Leecode 90. 子集 II DFS/位运算

news/2024/7/20 22:13:24 标签: 深度优先, leetcode, 算法, 数据结构, c++

原题链接:Leecode 90. 子集 II
在这里插入图片描述
DFS

class Solution {
public:
    vector<vector<int>> res;
    void dfs(vector<int>& nums,vector<int> v,int n)
    {
        res.push_back(v);
        for(int i=n;i<nums.size();i++)
        {
            if(i>n && nums[i-1]==nums[i] ) continue;
            v.push_back(nums[i]);
            dfs(nums,v,i+1);
            v.pop_back();
        }
    }
    vector<vector<int>> subsetsWithDup(vector<int>& nums) {
        sort(nums.begin(),nums.end());
        vector<int> v;
        dfs(nums,v,0);
        return res;
    }
};

位运算

class Solution {
public:
    vector<vector<int>> subsetsWithDup(vector<int>& nums) {
        sort(nums.begin(),nums.end());
        vector<vector<int>> res;
        int n=nums.size();
        int len=1<<n;
        for(int i=0;i<len;i++)
        {
            vector<int> v;
            bool flag=true;
            for(int j=0;j<n;j++)
            {
                if((i>>j)&1)
                {
                    if(j>0 && nums[j-1]==nums[j] && !((i>>(j-1))&1))
                    {
                        flag=false;
                        break;
                    }
                    v.push_back(nums[j]);
                }
            }
            if(flag) res.push_back(v);
        }
        return res;
    }
};

http://www.niftyadmin.cn/n/1264804.html

相关文章

hive中的group by分组查询注意和其他其他传统关系数据库sql的区别

顾名思义就是按照指定的一个或者多个字段就行分组查询&#xff0c;返回每个组的相关值&#xff0c;group by时常与聚合函数结合使用&#xff0c; 这里需要注意的是&#xff0c; 1、在hive中&#xff0c; 一旦有group by子句&#xff0c;那么&#xff0c;在select子句中只能有…

hive查询语句中的常见错误

1、case when --else end 语句中忘记写end&#xff0c;或者忘记把整个字句用as起别名&#xff0c;因为一个字段如果用case when条件语句计算后就是已经生成新的字段了&#xff0c;不能再用以前的字段名称。例如&#xff1a; 原来的字段是age&#xff0c;他的值是连续的int&…

Leecode 剑指 Offer 38. 字符串的排列 DFS

原题链接&#xff1a;Leecode 剑指 Offer 38. 字符串的排列 DFS class Solution { public:vector<string> res;vector<bool> v;void dfs(const string& s,int n,int l,string& t){if(ln){res.push_back(t);return ;}for(int i0;i<n;i){if(v[i] || (i…

hiveq sql语句的三种执行方式

hive脚本的三种执行方式 1. hive控制台交互式执行&#xff1b;2. hive -e "SQL"执行&#xff1b;或者 hive -S -e " sql" ,加了-S表示静音模式&#xff0c;即不会显示mapreduce的操作过程。 这种方式直接在bash shell终端里边输入 hive -e "SQL&q…

Leecode 567. 字符串的排列

原题链接&#xff1a;Leecode 567. 字符串的排列 class Solution { public:bool checkInclusion(string s1, string s2) {int n1s1.size();int n2s2.size();if(n1>n2) return false;vector<int> v1(26);vector<int> v2(26);for(int i0;i<n1;i){v1[s1[i]-a]…

学习人工智能

研一入学快一个月了&#xff0c;对于机器学习方面的学习没有方向感&#xff0c;一时不知道下一步该如何继续下去。 今天是2021年11月1日&#xff0c;实验室学习的第一个晚上&#xff0c;今晚收获不是很大&#xff0c;今天暂停了之前吴恩达的机器学习视频&#xff0c;开始了项目…

hive中的order by ,sort by ,distribute by,cluster by的用法与区别

一、order by order by后面不跟limit的话&#xff0c;order by会强制将reduce number设置成1&#xff0c;不加limit,会将所有数据sink到reduce端来做全局排序。多个reducer无法保证全局有序&#xff0c;但是因为只有一个reducer&#xff0c;就导致当输入数据规模较大时&#…

李航——《统计学习方法》(一)

第1章 统计学习方法概论 1.统计学习 统计学习是关于计算机基于数据构建概率统计模型并运用模型对数据进行预测与分析的一门学科。 也可以说统计学习就是计算机系统通过运用数据及统计方提高系统性能的机器学习。故统计学习也称为统计机器学习。 统计学习的目的在于从假设空…