Leecode 401. 二进制手表

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

原题链接:Leecode 401. 二进制手表
在这里插入图片描述
在这里插入图片描述
糙到不行的DFS(效率感人):

class Solution {
public:
    vector<string> res;
    int l1[4],l2[6];
    void dfs(int n,int now,int h,int m)
    {
        if(n==now)
        {
            if(!(h>11 || m>59)) 
            {
                string s;
                s+=to_string(h);
                s+=':';
                if(m/10==0) s+='0';
                s+=to_string(m);
                res.push_back(s);
            }
            return ;
        }
        if(h>11 || m>59) return ;
        for(int i=0;i<4;i++)
        {
            if(!l1[i])
            {
                l1[i]=1;
                dfs(n,now+1,h+(1<<i),m);
                l1[i]=0;
            }
        }
        for(int i=0;i<6;i++)
        {
            if(!l2[i])
            {
                l2[i]=1;
                dfs(n,now+1,h,m+(1<<i));
                l2[i]=0;
            }
        }
    }
    vector<string> readBinaryWatch(int turnedOn) {
        dfs(turnedOn,0,0,0);
        sort(res.begin(),res.end());
        res.erase(unique(res.begin(),res.end()),res.end());
        return res;
    }
};

美丽而优雅的写法~

class Solution {
public:
    //计算二进制中1的个数
    int Count(int n)
    {
        int r=0;
        while(n)
        {
            n=n&(n-1);
            r++;
        }
        return r;
    }
    vector<string> readBinaryWatch(int turnedOn) {
        vector<string> res;
        for(int i=0;i<12;i++)
        {
            for(int j=0;j<60;j++)
            {
                if(Count(i)+Count(j)==turnedOn)
                {
                    string s;
                    s+=to_string(i);
                    s+=':';
                    if(j/10==0) s+='0';
                    s+=to_string(j);
                    res.push_back(s);
                }
            }
        }
        return res;
    }
};

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

相关文章

win10环境下python3.x远程连接mysql数据库操作数据

用不同的模块有二种方法建立与mysql的连接&#xff1a; 方法一&#xff1a; 首先&#xff0c;从sqlalchemy模块导入create_engine类 from sqlalchemy import create_engine 然后&#xff0c;创建一个连接。 最后&#xff0c;读取表信息&#xff1a; 在第三步的时候可能会抛…

Leecode 79. 单词搜索 DFS

原题链接&#xff1a;Leecode 79. 单词搜索 又臭又长的代码 class Solution { public:bool resfalse;vector<vector<int> > v;void dfs(vector<vector<char>>& board, string word,string s,int i,int j,int n){int mboard.size(),n1board[0].…

如何用python自动调用qq邮箱发送邮件详细说明(带图文和代码)

第一步&#xff1a;在qq邮箱里边开启POP3/SMTP服务和IMAP/SMTP服务 按照导航提示用密保手机号发一个验证短信会收到一个是授信码&#xff0c;保存下来&#xff0c;后边代码中会用到这个授权码。 第二步&#xff0c;到python中编写如下代码&#xff1a; #导入需要用到的模块 …

Leecode 303. 区域和检索 - 数组不可变 前缀和

原题链接&#xff1a;Leecode 303. 区域和检索 - 数组不可变 class NumArray { public:vector<int> v;NumArray(vector<int>& nums) {int nnums.size();v.resize(n);v[0]nums[0];for(int i1;i<n;i){v[i]v[i-1]nums[i];}}int sumRange(int left, int righ…

Leecode 724. 寻找数组的中心下标

原题链接&#xff1a;Leecode 724. 寻找数组的中心下标 class Solution { public:int pivotIndex(vector<int>& nums) {int nnums.size();int sumaccumulate(nums.begin(),nums.end(),0);int tmp0;for(int i0;i<n;i){if(2*tmpnums[i]sum) return i;tmpnums[i];…

样本不平衡处理包imblearn导入报错的处理方法

今天在做信用信用评分模型时候&#xff0c;需要用imblearn包里边的smote类处理样本不平衡&#xff0c;在jupyter下用下边代码安装库&#xff1a; !pip install --user imbalanced-learn 安装imbalanced-learn库 但是在安装好使用中遇到2个问题。 问题一&#xff1a;用impo…

Leecode 第 292 场周赛 6056. 字符串中最大的 3 位相同数字

原题链接&#xff1a;6056. 字符串中最大的 3 位相同数字 class Solution { public:string largestGoodInteger(string num) {string s;for(int i2;i<num.size();i){if(num[i]num[i-1] && num[i-1]num[i-2]){smax(s,string(3,num[i]));}}return s;} };

win系统下pycharm下py2.x和py3.x双环境的pyspark配置

一、py2.x和py3.x双环境的安装 第一步&#xff1a;首先在win上分别安装anaconda2和anaconda3&#xff0c;注意安装在不同的文件路径下&#xff0c;并且在安装二个的时候下边这二个框不一定不勾选&#xff0c;安装第一个时候可以勾选。 然后&#xff0c;分别设置好环境变量&…