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

【LeetCode每日一题】——401.二进制手表

文章目录

  • 一【题目类别】
  • 二【题目难度】
  • 三【题目编号】
  • 四【题目描述】
  • 五【题目示例】
  • 六【题目提示】
  • 七【解题思路】
  • 八【时间频度】
  • 九【代码实现】
  • 十【提交结果】

一【题目类别】

  • 回溯

二【题目难度】

  • 简单

三【题目编号】

  • 401.二进制手表

四【题目描述】

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

五【题目示例】

  • 示例 1:

    • 输入:turnedOn = 1
    • 输出:[“0:01”,“0:02”,“0:04”,“0:08”,“0:16”,“0:32”,“1:00”,“2:00”,“4:00”,“8:00”]
  • 示例 2:

    • 输入:turnedOn = 9
    • 输出:[]

六【题目提示】

  • 0 <= turnedOn <= 10

七【解题思路】

  • 该题目很容易想到使用回溯+剪枝来解决
  • 我们需要在10个灯中选择n个灯点亮,并计算其时间和,需要注意要判断该时间和是否合理,如果不合理(小时超过11,分钟超过59)需要进行剪枝
  • 上面提到“选择n个灯点亮”,我们肯定不能一起全部点亮,所以需要用到回溯,一个一个选择,还可以进行不同的组合
  • 为了实现“选择n个灯点亮”,我们可以设置小时数组和分钟数组,长度为10,不足10位补零,目的是使用这两个数组来模拟小时和分钟的亮灯情况(数组索引选中的值即为亮的灯)
  • 具体实现可以参考下面的代码,最后按照回溯+剪枝的方法将结果计算出并返回即可

八【时间频度】

  • 时间复杂度: O ( C 10 n ) O(C_{10}^{n}) O(C10n) n n n为传入的参数值
  • 空间复杂度: O ( n ) O(n) O(n) n n n为传入的参数值

九【代码实现】

  1. Java语言版
class Solution {public List<String> readBinaryWatch(int turnedOn) {// 定义时间数组int[] hours = {1, 2, 4, 8, 0, 0, 0, 0, 0, 0};int[] minutes = {0, 0, 0, 0, 1, 2, 4, 8, 16, 32};// 定义结果列表List<String> res = new ArrayList<>();// 回溯计算可能的时间组合backtrack(turnedOn, 0, 0, 0, res, hours, minutes);// 返回结果return res;}private void backtrack(int count, int index, int hour, int minute, List<String> res, int[] hours, int[] minutes) {if (hour > 11 || minute > 59) {return;}if (count == 0) {res.add(String.format("%d:%02d", hour, minute));}for (int i = index; i < 10; i++) {backtrack(count - 1, i + 1, hour + hours[i], minute + minutes[i], res, hours, minutes);}}
}
  1. Python语言版
class Solution:def readBinaryWatch(self, turnedOn: int) -> List[str]:# 定义时间数组hours = [1, 2, 4, 8, 0, 0, 0, 0, 0, 0]minutes = [0, 0, 0, 0, 1, 2, 4, 8, 16, 32]# 定义结果列表res = []# 回溯计算可能的时间组合def backtrack(count, index, hour, minute):if hour > 11 or minute > 59:returnif count == 0:res.append("%d:%02d" % (hour, minute))returnfor i in range(index, 10):backtrack(count - 1, i + 1, hour + hours[i], minute + minutes[i])backtrack(turnedOn, 0, 0, 0)# 返回结果return res
  1. C语言版
/*** Note: The returned array must be malloced, assume caller calls free().*/#define MAX_RES_SIZE 256// 定义回调函数来递归查找所有可能的时间组合
void backtrack(int count, int index, int hour, int minute, char res[MAX_RES_SIZE][6], int *returnSize, int * hours, int *minutes)
{if (hour > 11 || minute > 59){return;}if (count == 0){sprintf(res[*returnSize], "%d:%02d", hour, minute);(*returnSize)++;return;}for (int i = index; i < 10; i++){backtrack(count - 1, i + 1, hour + hours[i], minute + minutes[i], res, returnSize, hours, minutes);}
}char** readBinaryWatch(int turnedOn, int* returnSize)
{// 定义时间数组int hours[] = {1, 2, 4, 8, 0, 0, 0, 0, 0, 0};int minutes[] = {0, 0, 0, 0, 1, 2, 4, 8, 16, 32};// 分配空间用于存储结果char (*res)[6] = malloc(MAX_RES_SIZE * sizeof(*res));*returnSize = 0;// 开始递归backtrack(turnedOn, 0, 0, 0, res, returnSize, hours, minutes);// 转换为char**返回char** finRes = malloc(*returnSize * sizeof(char*));for (int i = 0; i < *returnSize; i++){finRes[i] = res[i];}return finRes;
}

十【提交结果】

  1. Java语言版
    在这里插入图片描述

  2. Python语言版
    在这里插入图片描述

  3. C语言版
    在这里插入图片描述

相关文章:

【LeetCode每日一题】——401.二进制手表

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时间频度】九【代码实现】十【提交结果】 一【题目类别】 回溯 二【题目难度】 简单 三【题目编号】 401.二进制手表 四【题目描述】 二进制手表顶部…...

ROM和RAM的区别

ROM&#xff08;Read-Only Memory&#xff0c;只读存储器&#xff09;和RAM&#xff08;Random Access Memory&#xff0c;随机存取存储器&#xff09;是计算机系统中两种不同类型的存储技术&#xff0c;它们在功能、用途和特性上有显著的区别&#xff1a; 1. 存储数据的持久性…...

tomcat的配置

tomcat8最佳配置 <Executor name"tomcatThreadPool" namePrefix"catalina-exec-"maxThreads"500" minSpareThreads"100" prestartminSpareThreads"true"/><Connector executor"tomcatThreadPool" port&…...

SQL使用IN进行分组统计时如何将不存在的字段显示为0

这两天被扔过来一个脏活儿&#xff1a;做一个试点运行系统的运营指标统计。 活儿之所以称为“脏”&#xff0c;是因为要统计8家单位共12个项目的指标。而每个项目有3个用户类指标&#xff0c;以及分17个功能模块&#xff0c;每个功能模块又分5个维度的指标。也就是单个项目是1…...

MoCo对比损失

MoCo&#xff08;Momentum Contrast&#xff0c;动量对比学习&#xff09;是一种自监督学习方法&#xff0c;由Facebook AI Research提出&#xff0c;主要用于无监督学习视觉表示。在MoCo中&#xff0c;对比损失&#xff08;Contrastive Loss&#xff09;扮演着至关重要的角色&…...

01_WebRtc_一对一视频通话

文章目录 通话网页的设计客户端实现Web的API 服务端实现 2024-9-20 很久没有写博客啦&#xff0c;回顾总结这段时间的成果&#xff0c; 写下博客放松下&#xff08;开始偷懒啦&#xff09;主要内容&#xff1a;实现网页&#xff08;html&#xff09;打开摄像头并显示到页面需要…...

【小程序 - 大智慧】深入微信小程序的渲染周期

目录 前言应用生命周期页面的生命周期组件的生命周期渲染顺序页面路由运行机制更新机制同步更新异步更新 前言 跟 Vue、React 框架一样&#xff0c;微信小程序框架也存在生命周期&#xff0c;实质也是一堆会在特定时期执行的函数。 小程序中&#xff0c;生命周期主要分成了三…...

《深入了解 Linux 操作系统》

在计算机领域中&#xff0c;Linux 作为一种强大而重要的操作系统&#xff0c;有着广泛的应用场景&#xff0c;尤其在服务器端占据着举足轻重的地位。 一、Linux 简介 Linux 是一种操作系统&#xff0c;主要应用于服务器端。不同的厂商或个人会对 Linux 的内核进行封装&#xff…...

批评他人也需要技术

俗话说“人无完人&#xff0c;尺有所短&#xff0c;寸有所长”&#xff0c;每个人都有可能犯错误。我们犯错误&#xff0c;并不能说明我们一无是处&#xff1b;一个人做了一件好事&#xff0c;也不能说他做的每件事都是好的。 营造良好的氛围。一说到批评&#xff0c;我们许多…...

安装SQL Server遇到的问题

出现了一和二的问题&#xff0c;最后还是通过三完全卸载sqlserver安装成功了 一.安装过程中依次报错 1.MOF编译器无法连接WMI服务器。原因可能是语义错误(例如&#xff0c;与现有WMI知识库不兼容)或实际错误(例如WMI服务器启动失败)。 2.PerfLib 2.0计数器removal失败&#xf…...

java项目之编程训练系统源码(springboot)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的编程训练系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 编程训练系统的主要使用者管…...

MySQL的登陆错误:ERROR 1049 (42000): Unknown database ‘root‘

MySQL的登陆错误&#xff1a;ERROR 1049 (42000): Unknown database ‘root’ 安装MySQL的时候&#xff0c;到网上查的命令行登陆MySQL的方法都是mysql -u root -p password mysql -r root -p 123456但是奇怪的是这条命令我输进去死活都不对&#xff0c;它都会要求再输入一遍…...

vue使用vue-i18n实现国际化

我使用的是vue2.6版本&#xff0c;具体使用其他版本可以进行修改 一、安装 npm install vue-i18n -D 二、配置 1、文件配置 ①在src下创建 i18n 目录 ②在 i18n 目录下创建 langs 文件夹 和 index.js文件&#xff0c;具体如下 2、index.js代码如下&#xff0c;这里使用了…...

微信小程序如何设置左侧导航栏跟随页面滑动

一、使用 scroll-view 组件实现页面滚动 在页面的 wxml 文件中&#xff0c;将需要滚动的内容包裹在scroll - view组件内&#xff0c;例如&#xff1a; <scroll-view scroll-y"true" style"height: 800rpx;"><!-- 这里放置页面的主要内容 -->…...

个人小结(2.0)

离谱&#xff0c;困扰着几周的问题今天偶然发现了解决方法。 问题如下&#xff1a;就是对应的模块引入爆红&#xff0c;但是单击进入引入的文件没有问题 然后它的提示是&#xff1a; 无法找到模块“../views/screen/index.vue”的声明文件。“c:/Users/10834/Desktop/0716_pro…...

探索自动化的魔法:Python中的pyautogui库

文章目录 探索自动化的魔法&#xff1a;Python中的 pyautogui 库背景&#xff1a;为什么选择pyautogui&#xff1f;pyautogui是什么&#xff1f;如何安装pyautogui&#xff1f;五个简单的库函数使用方法场景应用常见Bug及解决方案总结 探索自动化的魔法&#xff1a;Python中的 …...

YOLOv9改进策略【Neck】| GSConv+Slim Neck:混合深度可分离卷积和标准卷积的轻量化网络设计

一、本文介绍 本文记录的是利用GsConv优化YOLOv9的颈部网络。深度可分离卷积&#xff08;DSC&#xff09;在轻量级模型中被广泛使用&#xff0c;但其在计算过程中会分离输入图像的通道信息&#xff0c;导致特征表示能力明显低于标准卷积&#xff08;SC&#xff09;&#xff0c…...

EasyExcel的基本使用——Java导入Excel数据

使用EasyExcel导入Excel数据有两种方式 无论哪种方式我们都需要建立Excel表格和Java对象的绑定 首先我们需要根据Excel表头定义一个对应的类 excel表示例&#xff1a; 对应的类&#xff1a; 使用ExcelProperty将excel列名和字段名绑定&#xff0c;括号里面填列名 package co…...

Apache Iceberg 试用

启动 spark-sql 因为 iceberg 相关的 jars 已经在 ${SPARK_HOME}/jars 目录&#xff0c;所以不用 --jars 或者 --package 参数。 spark-sql --master local[1] \--conf spark.sql.extensionsorg.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions \--conf spar…...

速通汇编(六)认识栈,SS、SP寄存器,push和pop指令的作用

一&#xff0c;栈 &#xff08;一&#xff09;栈的特点 栈是一种具有特殊访问方式的存储空间&#xff0c;特殊在于&#xff0c;进出这块存储空间的数据&#xff0c;“先进后出&#xff0c;后进先出” 由于栈的这个“先进后出”的特点&#xff0c;我们可以利用其来很好的操作内…...

C++初阶-list的底层

目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

反向工程与模型迁移:打造未来商品详情API的可持续创新体系

在电商行业蓬勃发展的当下&#xff0c;商品详情API作为连接电商平台与开发者、商家及用户的关键纽带&#xff0c;其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息&#xff08;如名称、价格、库存等&#xff09;的获取与展示&#xff0c;已难以满足市场对个性化、智能…...

Qt Widget类解析与代码注释

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码&#xff0c;写上注释 当然可以&#xff01;这段代码是 Qt …...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本&#xff1a; 3.8.1 语言&#xff1a; JavaScript/TypeScript、C、Java 环境&#xff1a;Window 参考&#xff1a;Java原生反射机制 您好&#xff0c;我是鹤九日&#xff01; 回顾 在上篇文章中&#xff1a;CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

【笔记】WSL 中 Rust 安装与测试完整记录

#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统&#xff1a;Ubuntu 24.04 LTS (WSL2)架构&#xff1a;x86_64 (GNU/Linux)Rust 版本&#xff1a;rustc 1.87.0 (2025-05-09)Cargo 版本&#xff1a;cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...

力扣热题100 k个一组反转链表题解

题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...

省略号和可变参数模板

本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...

Qemu arm操作系统开发环境

使用qemu虚拟arm硬件比较合适。 步骤如下&#xff1a; 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载&#xff0c;下载地址&#xff1a;https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...

BLEU评分:机器翻译质量评估的黄金标准

BLEU评分&#xff1a;机器翻译质量评估的黄金标准 1. 引言 在自然语言处理(NLP)领域&#xff0c;衡量一个机器翻译模型的性能至关重要。BLEU (Bilingual Evaluation Understudy) 作为一种自动化评估指标&#xff0c;自2002年由IBM的Kishore Papineni等人提出以来&#xff0c;…...

【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验

Elasticsearch 在大数据生态圈的地位 & 实践经验 1.Elasticsearch 的优势1.1 Elasticsearch 解决的核心问题1.1.1 传统方案的短板1.1.2 Elasticsearch 的解决方案 1.2 与大数据组件的对比优势1.3 关键优势技术支撑1.4 Elasticsearch 的竞品1.4.1 全文搜索领域1.4.2 日志分析…...