LeetCode 401. 二进制手表(二进制枚举)

LeetCode 401:二进制手表(详细技术解析) 本文解析了LeetCode 401题"二进制手表"的解题思路。题目要求根据亮起的LED灯数量(turnedOn),返回所有可能的时间表示。文章提供了两种解法:暴力枚举法(遍历0-11小时和0-59分钟,检查二进制1的个数和)和位运算优化法(枚举10位二进制数,分割为小时和分钟)。两种方法的时间复杂度均为O(1)。代码实现重点处理了时间格式约束(小时无前导零、分钟补两位),并指出了常见错误如分钟格式错误、小时范围错误等。测试用例验证了代码正确性,文章还建议了同类扩展题目。 阅读详情

401. 二进制手表

二进制手表顶部有 4 个 LED 代表 小时(0-11),底部的 6 个 LED 代表 分钟(0-59)。
每个 LED 代表一个 0 或 1,最低位在右侧。
在这里插入图片描述

例如,上面的二进制手表读取 “3:25”。
给定一个非负整数 n 代表当前 LED 亮着的数量,返回所有可能的时间。

示例 :
输入: n = 1
返回: [“1:00”, “2:00”, “4:00”, “8:00”, “0:01”, “0:02”, “0:04”, “0:08”, “0:16”, “0:32”]

提示:

  • 输出的顺序没有要求。
  • 小时不会以零开头,比如 “01:00” 是不允许的,应为 “1:00”。
  • 分钟必须由两位数组成,可能会以零开头,比如 “10:2” 是无效的,应为 “10:02”。
  • 超过表示范围(小时 0-11,分钟 0-59)的数据将会被舍弃,也就是说不会出现 “13:00”, “0:61” 等时间。
思路:二进制枚举

class Solution {
public:
    vector<string> readBinaryWatch(int num) {
        vector<string> res;
        char str[6]; 
        for(int i = 0;i < (1<<10); i ++){
            int sum = 0;
            for(int j = 0; j < 10; j ++){
                if(i&(1<<j)){
                    sum++;
                }
            }  
            if(sum==num){
                int h=i >> 6, m = i & 63;
                if(h<12&&m<60){
                    sprintf(str,"%d:%02d",h,m);
                    res.push_back(str);
                }
            }
        }
        return res;
    }   
};
汽车Bootloader流程 根据ISO14229-1 写的汽车行业 Bootloader流程 1:编程前 → 先读取软硬件版本号 22 F1 XX 软件信息 22 F1 XX 硬件信息 → 进入扩展会话extend diagnostic sessions 功能寻址 10 03 → 编程条件检测routine control:ECU升级条件的判断,如车速,检测车的型号 31 01 02 03 → 关闭DTC检测,(由于很多节点收不到其它节点的报文后会记录DTC故障)功能寻址 85 02 → 关闭诊断通讯(禁止各个节点的应用报... 阅读详情

相关推荐

远程桌面(RDP)共享USB设备全攻略:不止Hyper-V,你的加密狗和CH340串口也能远程用

本文详细介绍了远程桌面(RDP)共享USB设备的完整解决方案,包括加密狗和CH340串口设备的远程使用技巧。通过RemoteFX USB重定向技术,用户可以在远程会话中无缝使用本地USB设备,提升工作效率。文章涵盖企业级配置、典型设备实战案例及高级故障排除方法,是远程工作者的实用指南。

weixin_42522964的博客 333

LeetCode 0401. 二进制手表 - 两种方法详解

LeetCode 0401. 二进制手表 - 两种方法详解 二进制手表顶部有 4 个 LED 代表 小时(0-11),底部的 6 个 LED 代表 分钟(0-59)。每个 LED 代表一个 0 或 1,最低位在右侧。 给你一个整数 turnedOn ,表示当前亮着的 LED 的数量,返回二进制手表可以表示的所有可能时间。你可以 按任意顺序 返回答案。

<font color="Pink">Tisfy的博客</font> 1370

减小伺服电机共振的方法(以松下伺服为例)

嘿 ! 我是【小黄】 , 我们又见面啦 !!! 毕竟技术只有大家交流才会进步嘛 ! 这博客是对自己学习的一点点记录和总结 ,如果您对自动控制感兴趣的话 ,可以关注一下我的动态 , 我们一起学习呀 ! 我们都还年轻 ,我们还有无限可能 。 YES ! 减小伺服电机共振的方法(以松下伺服为例)1. 准备工作:1.1.1 如何推定共振点:1.1.2 测定实操:1.1.3 总结:2. 下期预告: 在我们调试完伺服参数以后机器人运动到某个特定位置会产生振动或异响,我们要做的就是消除这个异响保..

在下小黄的博客 1万+

Leetcode 401. 二进制手表 C++

Leetcode 401. 二进制手表 题目 二进制手表顶部有 4 个 LED 代表 小时(0-11),底部的 6 个 LED 代表 分钟(0-59)。 每个 LED 代表一个 0 或 1,最低位在右侧。 例如,上面的二进制手表读取 “3:25”。 给定一个非负整数 n 代表当前 LED 亮着的数量,返回所有可能的时间。 示例: 输入: n = 1 返回: ["1:00", "2:00", "4:00", "8:00", "0:01", "0:02", "0:04", "0:08", "0:16", "0

weixin_43750513的博客 492

避坑指南:C#调用CodeSoft打印标签时常见的5个错误及解决方法

本文总结了C#调用CodeSoft打印标签时常见的5个核心错误及解决方案,涵盖环境配置、模板加载、变量赋值、打印机切换和资源管理。重点解析了如何避免COM对象创建失败、模板路径错误、变量名不匹配、打印机切换异常及内存泄漏等问题,帮助开发者实现稳定高效的标签打印集成。

weixin_29215815的博客 223

手把手教你用闲置安卓手机+蓝鲸支付,零成本搞定个人项目自动收款(附私有化部署教程)

本文详细介绍了如何利用闲置安卓手机和蓝鲸支付系统,零成本搭建个人项目自动收款解决方案。通过私有化部署教程,读者可以学习到从手机选择、系统配置到支付渠道对接的全流程,实现安全、高效的收款系统,特别适合个人开发者和小型项目使用。

weixin_29597551的博客 334

题目:401.二进制手表

leetcode 题目:401.二进制手表

2301_76145947的博客 265

FlashAttention 快速安装指南(避免长时间编译)

FlashAttention 编译太慢?本篇提供无需编译的预编译 wheel 快速安装方案,适配多版本 Python、PyTorch 和 CUDA,极大节省部署时间!

Junseer的博客 9719

leetcode:401. 二进制手表

此外,分钟和小时所拥有的灯数也是不一样的,因此for循环也需要布尔值来设定搜索范围。个灯,可得时钟显示剩余的可用灯数为。为num,分钟的显示用了。

OceanStar的博客 942

Ansys Fluent DPM模型实战:旋风分离器颗粒轨迹仿真全流程解析(附案例文件)

本文详细解析了使用Ansys Fluent中的离散相模型进行旋风分离器颗粒轨迹仿真的全流程。从几何简化、网格策略到物理模型界定,重点阐述了DPM模型的关键设置步骤,包括单向耦合假设、颗粒注入与受力配置,并提供了结果分析与优化方法,帮助工程师精准模拟气固分离过程,提升设计效率。

sunny的博客 703

Java炫酷烟花③(完整代码)

Java语言实现炫酷烟花动画的完整代码。 下载代码 下载链接:我是一只有趣的兔子,感谢你的喜欢。

AIGC 784

二进制手表(简单)

表示当前亮着的 LED 的数量,返回二进制手表可以表示的所有可能时间。每个 LED 代表一个 0 或 1,最低位在右侧。二进制手表顶部有 4 个 LED 代表。,底部的 6 个 LED 代表。

qq_52954114的博客 682

MCAL知识点(十):ERU驱动配置详解

ERS:外部请求单元ETL:中断逻辑单元OGU:输出逻辑单元MCU里面配置要使用的功能和选择输入的管脚,注意上述模块关注点讲述的ERU必须和边沿检测模块相关联。

梦想技术家 1223

力扣(leetcode) 401. 二进制手表(枚举)(奇妙思路循环)

题目在这:https://leetcode-cn.com/problems/binary-watch/ 题目分析: 用通俗易懂的语言解释一下题目的意思。 上面一行是小时。 下面一行是分钟。 拿题目给的图解释一下,左边是低位,所以按照亮灭灯:0011 就是3 下面的哪一行 按照亮灭灯 :011001 就是25。 如果直接是看表的话,每个灯下面有个数,每一行的亮的灯下面标的数相加也可以。 小时:2+1=3 。分钟 16+8+1 = 25。 所以就是3:25。 题目给你一个数,这个数表示亮了几个灯,让你找出全

深度不学习!!的博客 1993

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

LeetCode 401之二进制手表

LeetCode第401题,题目如下:二进制手表顶部有 4 个 LED 代表小时(0-11),底部的 6 个 LED 代表分钟(0-59)。 每个 LED 代表一个 0 或 1,最低位在右侧。 例如,上面的二进制手表读取 “3:25”。 给定一个非负整数 n 代表当前 LED 亮着的数量,返回所有可能的时间。 案例: 输入: n = 1 返回: [“1:00”, “2:00”, “4:00”, ...

Sheena997的博客 409

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Leetcode 401二进制 手表:递归回溯/二进制枚举

直接采用回溯暴搜的方法很复杂 int hours[] = {1,2,4,8}; int minutes[] = {1,2,4,8,16,32}; class Solution { public: set<string> res; bool visited_hours[4]={false}; bool visited_minutes[6]={false}; //int hours[] = {1,2,4,8}; //int minutes[]...

wwxy1995的博客 283

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

LeetCode 401 二进制手表[枚举法] HERODING的LeetCode之路

解题思路: 作为简单题的唯一可能就是用枚举法去解决了,枚举所有的小时和分钟,检测二进制中1的个数相加是否等于turnedOn,等于则组合成符合要求的时间规格,代码如下: class Solution { public: vector<string> readBinaryWatch(int turnedOn) { vector<string> res; // 枚举所有的小时和分钟 for(int i = 0; i < 12;

HERODING23的博客 187

Leetcode 401. 二进制手表 (二进制枚举)

我们采用二进制枚举的方法,1代表灯亮,0代表灯灭,分针的恰好有低6位对应,时针对应高4位,对于一个数字i,将其移动6位后 ,可以将时针刻度取出来,对其取低六位。采用二进制枚举方法。 class Solution { public: vector<string> readBinaryWatch(int turnedOn) { vector<string> res; for (int i = 0; i < 1024; ...

wwxy1995的博客 199

leetcode.401. 二进制手表---位运算+枚举

401. 二进制手表 二进制手表顶部有 4 个 LED 代表 小时(0-11),底部的 6 个 LED 代表 分钟(0-59)。每个 LED 代表一个 0 或 1,最低位在右侧。 例如,下面的二进制手表读取 “3:25” 。 给你一个整数 turnedOn ,表示当前亮着的 LED 的数量,返回二进制手表可以表示的所有可能时间。你可以 按任意顺序 返回答案。 小时不会以零开头: 例如,"01:00" 是无效的时间,正确的写法应该是 "1:00" 。 分钟必须由两位数组成,可能会以零开头: 例如,"

xiangguang_fight的博客 240

leetcode 401. 二进制手表-暴力破解枚举法

解题思路: 本题要求,根据输入的二进制亮灯的数量,来求解出所有可能得时间,我们知道时间的显示是在一个固定的范围,所以可以考虑枚举求解,然后按照条件进行筛选 注意; 1.枚举的范围 2.string的处理 class Solution { public: // 暴力破解枚举法 vector<string> readBinaryWatch(int turnedOn) { vector<string> res; for(int h = 0;...

jhb1021821368的博客 211

LeetCode 401 - 二进制手表

这道题其实是一个非常典型的组合枚举问题。我们有 10 个 LED 灯,其中 4 个代表小时(范围 0–11),6 个代表分钟(范围 0–59),题目要求我们给出所有“亮灯数 = turnedOn”时的合法时间组合。 看起来像是个电子表的问题,但本质上是二进制位运算与组合的应用。我们可以把“亮灯的数量”理解成“二进制 1 的个数”,所以整个题的核心思路就是:枚举所有可能的小时和分钟组合,筛选出二进制中 1 的个数刚好等于 turnedOn 的情况。

记录从移动端、鸿蒙到物联网与AI的完整实战与思考。专注于分享可复用的工程方案与产品思维,尤其深入鸿蒙生态与全栈开发。以十年工程与管理沉淀,为你提供清晰的技术纵深路径。坚信技术的价值在于“贯通”与“落地”。 4296

力扣刷题笔记——第401题. 二进制手表

参考题解:官方题解 题目: 标签: 意想不到。 位运算。 思路: 这道题是一道简单题,只需要枚举就可以解决。 然而,必须要知道这是一道枚举题。否则可能会想歪。 枚举所有数字,用 bitCount 计算对应的比特数,保留符合要求的组合,并生成符合格式要求的题解。 题解: class Solution { public List<String> readBinaryWatch(int turnedOn) { List<String> ans = new

qq_38522564的博客 272

每日一题 401. 二进制手表

开始使用的枚举,麻烦且效率比较低。

qq_42376925的博客 184

LeetCode 401. 二进制手表

本题解利用了二进制枚举的思想,将 LED 状态映射为整数的二进制位,直接遍历所有组合并筛选。这种方法简单易懂,代码简洁,非常适合初学者理解二进制表示和位运算。同时,由于总状态数固定,效率也非常高。

qq_46121420的博客 654

Leetcode401. 二进制手表

Leetcode401. 二进制手表

ProgramNovice的博客 137

A.每日一题——401. 二进制手表

A.每日一题——401. 二进制手表解析

要努力去发光,而不是被照亮~ 318
上一篇: hduoj 5616 Jam‘s balance (二进制枚举)
下一篇: hduoj 5327 Olympiad (一维前缀和)
心一QAQ
博客等级 码龄7年 23粉丝 122原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值