算法训练02 | 数组part02_977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II

本文介绍了如何利用双指针法解决有序数组的平方问题(977题),滑动窗口技巧处理长度最小子数组(209题),以及螺旋矩阵II的逻辑(59题)。通过代码随想录的文章和视频讲解,帮助读者理解和掌握这些算法在数组专题中的应用。

977.有序数组的平方

 209.长度最小的子数组

题目建议: 本题关键在于理解滑动窗口,这个滑动窗口看文字讲解 还挺难理解的,建议大家先看视频讲解。  拓展题目可以先不做。 

题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

文章讲解:代码随想录

视频讲解:拿下滑动窗口! | LeetCode 209 长度最小的子数组_哔哩哔哩_bilibili

59.螺旋矩阵II

题目建议:  本题关键还是在转圈的逻辑,在二分搜索中提到的区间定义,在这里又用上了。 

题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

文章讲解:代码随想录

视频讲解:一入循环深似海 | LeetCode:59.螺旋矩阵II_哔哩哔哩_bilibili

数组专题总结

文章链接:代码随想录

### 如何使用字符模拟七段显示器显示时间 要通过字符模拟七段显示器来显示时间(小时、分钟和秒),可以通过定义每一段的亮灭状态来构建数字形状。以下是具体方法: #### 字符表示七段数码管 七段数码管由七个线段组成,分别标记为 `a` 到 `g`,以及一个小数点 `dp` 表示分隔标识。这些线段的状态决定了最终显示的数字。 | 数字 | a | b | c | d | e | f | g | |------|---|---|---|---|---|---|---| | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | | 2 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | | ... |...|...|...|...|...|...|...| 对于每个数字,可以根据其对应的二进制编码决定哪些段应该点亮。例如,数字 `0` 的二进制编码为 `0b0111111`,意味着除了 `g` 段外其他都应被点亮[^3]。 #### 显示逻辑设计 为了动态更新时间和显示效果,可以按照以下方式处理: - 使用字符串数组存储每个数字对应于七段码的形式。 - 定义一个函数用于绘制当前的时间值。 - 添加小数点作为分隔符,在特定位置控制它的显示与否。 下面是一个 Python 实现的例子: ```python import time # 定义7段数码管各数字对应的开关模式 SEGMENTS = { '0': " __ \n| |\n|__|", '1': " \n |\n |", '2': " __ \n __|\n|__ ", '3': " __ \n __|\n __|", '4': " \n|__|\n |", '5': " __ \n|__ \n __|", '6': " __ \n|__ \n|__|", '7': " __ \n |\n |", '8': " __ \n|__|\n|__|", '9': " __ \n|__|\n __|" } def draw_time(hour, minute, second): """ 绘制给定时间 """ h1, h2 = divmod(hour, 10) m1, m2 = divmod(minute, 10) s1, s2 = divmod(second, 10) lines = ["", "", ""] segments = [h1, h2, m1, m2, s1, s2] for i in range(6): # 遍历六个数字的位置 digit_str = SEGMENTS[str(segments[i])] part_lines = digit_str.split("\n") if i % 2 != 0 and i < 4: # 如果是偶数位且不是最后一位,则加个小数点 part_lines[1] += "." for j in range(len(part_lines)): lines[j] += (" " + part_lines[j]) if (i > 0) else part_lines[j] return "\n".join(lines) while True: current_time = time.localtime() formatted_time = draw_time(current_time.tm_hour%12 or 12, current_time.tm_min, current_time.tm_sec) print(formatted_time) time.sleep(1) ``` 此脚本会持续刷新屏幕上的时间展示,并利用 ASCII 图形近似呈现实际硬件中的 LED 效果[^4]。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值