首页 > 其他分享 >leedcode-二进制手表

leedcode-二进制手表

时间:2024-04-19 15:05:20浏览次数:21  
标签:cur hour min 二进制 手表 leedcode turnedOn combinations total

自己写的,调用了combinations函数:

from itertools import combinations
from typing import List

class Solution:
    def readBinaryWatch(self, turnedOn: int) -> List[str]:
        # 可以表示小时的LED灯,对应的值分别是1,2,4,8
        hour_list = [1, 2, 4, 8]
        # 可以表示分钟的LED灯,对应的值分别是32,16,8,4,2,1
        min_list = [32, 16, 8, 4, 2, 1]
        res = []

        # 当亮灯数量超过8盏时,无法拼出合法的时间,返回空列表
        if turnedOn > 8:
            return []

        # 遍历所有可能的小时亮灯数量
        for i in range(0, turnedOn + 1):
            hour_temp = []
            min_temp = []

            # 生成当前亮灯数量下可能的小时组合
            cur_hours = combinations(hour_list, i)
            # 生成当前亮灯数量下可能的分钟组合
            cur_mins = combinations(min_list, turnedOn - i)

            # 遍历当前小时组合,计算小时总和
            for cur_hour in cur_hours:
                total_hour = sum(cur_hour)
                # 只有合法的小时范围才添加到临时小时列表中
                if total_hour >= 0 and total_hour <= 11:
                    hour_temp.append(total_hour)

            # 遍历当前分钟组合,计算分钟总和
            for cur_min in cur_mins:
                total_min = sum(cur_min)
                # 只有合法的分钟范围才添加到临时分钟列表中
                if total_min >= 0 and total_min <= 59:
                    min_temp.append(total_min)

            # 组合合法的小时和分钟,并将结果添加到结果列表中
            for hour in hour_temp:
                for min in min_temp:
                    # 如果分钟数小于等于9,需要在数字前面添加一个零,以保证格式正确
                    if min <= 9:
                        res.append(str(hour) + ":0" + str(min))
                    else:
                        res.append(str(hour) + ":" + str(min))

        return res

 

标签:cur,hour,min,二进制,手表,leedcode,turnedOn,combinations,total
From: https://www.cnblogs.com/yyyjw/p/18145881

相关文章

  • leedcode-判断子序列
    自己写的,有点麻烦classSolution:defisSubsequence(self,s:str,t:str)->bool:#第一步先验证s是t的无序子序列#使用字典记录t中每个字符的出现次数mydict=dict()foriint:ifnotmydict.get(i):......
  • C到二进制概述
    此帖是记录视频内容,防止后续自己遗忘一、预处理1、库文件预处理等于一个文本粘贴过程,编译后把库文件展开,展开本质也为粘贴内容这里的#include本质是在其中特定路径搜索(usr/include...),而#include"xxx"是在当前路径下进行搜索。其中#的include""高于#include<>.2、类......
  • C++实现string存取二进制数据的方法
    这篇文章主要介绍了C++实现string存取二进制数据的方法,针对STL中string的用法进行了较为详细的分析,需要的朋友可以参考下 本文实例讲述了C++实现string存取二进制数据的方法,分享给大家供大家参考。具体方法分析如下:一般来说,STL的string很强大,用起来也感觉很舒服,这段时间在......
  • c++ std::string能否存储二进制字符以及'\0'字符?
    c++的字符串类std::string能否存储二进制字符以及字符'\0'?要解决这个问题,我们首先要了解c++的std::string的存储结构。(注意不同的平台下C++规范对std::string的实现不完全一致,例如sizeof(std::string)在linuxx64gcc-4.4下的输出是8,而在macgcc4.2下的输出是24;这篇文章以Li......
  • leedcode-字符串中的第一个唯一字符
    自己写的,easyclassSolution:deffirstUniqChar(self,s:str)->int:mydict={}#创建一个空字典来存储每个字符的出现次数foriins:#遍历给定的字符串sifnotmydict.get(i):#如果当前字符不在字典中mydic......
  • 【MySQL】二进制安装MySQL
    【MySQL】二进制安装MySQL一、基于Ubuntu二进制安装MySQL8.0(5.7+适用)1、创建用户[root@Node-Ubuntu1804-20:~]#groupaddmysql[root@Node-Ubuntu1804-20:~]#useradd-r-gmysql-s/usr/sbin/nologinmysql2、创建目录[root@Node-Ubuntu1804-20:~]#mkdir/data/mysql......
  • 二进制输出整数
    一个整数转成二进制,都明白是如果转换的,可以利用他的转换原理用代码表现出来。例如7转换从二进制就是不断地除2,保留余数,一直到0:7除2,余数1,第二次,3除2,余数1,第三次,1除2,余1,最后是0,那么7的二进制的表现形式就是111,如果用代码表示的话,可以用循环来不断的除2,当然除二也是有条件的那......
  • day01-03_我的Java学习笔记(Java基础语法--注释、字面量、变量、二进制、ASCII编码、
    1.Java基础语法1.1注释1.2字面量(Python中叫数据类型)1.3变量1.3.1变量的定义及使用1.3.2变量使用注意事项1.4数据的存储形式:二进制字节、字、bit、byte的关系:字word字节byte位bit,来自英文bit,音译为“比特”,表示二进制位。字长是指字的......
  • leedcode-猜数字大小
    classSolution:defguessNumber(self,n:int)->int:i=1#初始猜测数为1flag=True#设置一个标志,用于控制循环#第一部分:使用倍增法寻找一个大于目标数字的边界值whileflag:#使用guess函数来判断......
  • vscode使用gdb插件调试二进制文件
    使用vscode访问虚拟机里面的代码。代码是在虚拟机的xshell编译的(必须的debug模式)。现在可以通过在vscode下面安装gdb插件。然后就可以在vscode下面使用gdb来启动这个二进制文件了,还可以在vscode里面,在函数上面打断点。 在vscode左侧栏,点击debug,可以创建launch.json文件。......