- 博客(39)
- 收藏
- 关注
原创 LeetCode|Day29|1009. 十进制整数的反码|Python刷题笔记
本文介绍了LeetCode第1009题【十进制整数的反码】的Python解法。题目要求将给定整数的二进制表示按位取反后返回对应的十进制数。解法采用构造掩码异或的方法,通过位运算技巧高效实现:先构造一个全1的掩码(比原数大),再与原数进行异或运算实现按位取反。文章简要解释了位运算原理,并提示了边界条件(n=0时直接返回1)。该方法利用了位运算的高效性,是刷题中提升性能的典型技巧。
2025-07-30 00:00:00
219
原创 LeetCode|Day28|67. 二进制求和|Python刷题笔记
【LeetCode|Day28|67. 二进制求和|Python解法】文章介绍了如何用Python内置函数快速实现二进制字符串相加。解题思路是将二进制字符串转为十进制相加,再转换回二进制字符串。使用int(a,2)和int(b,2)转换为十进制,相加后用bin()转换结果,并通过切片[2:]去除前缀"0b"。该方法简洁高效,适合Python初学者理解进制转换和字符串处理。文章属于【LeetCode简单题百日计划】系列,附有完整目录链接。
2025-07-29 00:00:00
205
原创 LeetCode|Day27|70. 爬楼梯|Python刷题笔记
LeetCode第70题“爬楼梯”是一个经典的动态规划问题。题目要求计算爬n阶楼梯的方法数,每次可以选择爬1或2阶。解法采用动态规划思想,本质上是一个斐波那契数列问题。通过初始化前两阶的方法数(1阶1种,2阶2种),后续每阶方法数等于前两阶方法数之和。代码使用Python实现,通过多变量赋值和循环完成状态转移,最终返回第n阶的方法数。该问题展示了动态规划的基本思路:状态定义、转移方程和边界条件处理。
2025-07-28 00:00:00
440
原创 LeetCode|Day26|191. 位 1 的个数|Python刷题笔记
本文介绍了 LeetCode 第 191 题「位 1 的个数」的解法。题目要求计算一个无符号整数二进制表示中 1 的个数(汉明重量)。文章提供了 Python 位运算解法,通过 n & 1 检查最低位是否为 1,并右移 n 逐位统计。关键点包括:按位与运算、右移操作和循环终止条件。该解法时间复杂度为 O(1),属于处理位运算问题的基本技巧。
2025-07-27 00:00:00
269
原创 LeetCode|Day25|389. 找不同|Python刷题笔记
【摘要】本文介绍了LeetCode简单题389.找不同的解法。题目要求在字符串t(由s随机打乱并添加一个字母生成)中找出添加的字母。核心解法是利用异或(XOR)操作特性:相同数异或为0,最终剩下的即为目标字母。通过遍历字符串s+t,对字符ASCII值进行异或运算,最后将结果转换为字符即可。时间复杂度O(n),空间复杂度O(1)。文章还复习了ord()、chr()等基础Python语法。该解法简洁高效,适合初学者理解位运算的应用场景。
2025-07-26 00:00:00
310
原创 LeetCode|Day24|383. 赎金信|Python刷题笔记
这篇文章介绍了LeetCode第383题「赎金信」的Python解法。题目要求判断一个字符串能否由另一个字符串中的字符构成。作者使用collections.Counter来统计字符出现次数,通过比较两个计数字典判断是否满足条件。核心解法仅需一行代码:return Counter(ransomNote) <= Counter(magazine),利用Python的<=运算符可以比较计数字典的包含关系。文章还提示了基础语法要点,包括Counter的使用和比较运算符的特性,并提供了返回系列总目录的链接
2025-07-25 00:00:00
386
原创 LeetCode|Day23|326. 3 的幂|Python刷题笔记
本文介绍了LeetCode第326题"3的幂"的Python解法。题目要求判断一个整数是否为3的幂次方。采用循环除法的方法,通过不断将n除以3并检查是否能整除,直到n变为1或无法整除。核心代码仅4行,使用while循环和取模运算判断整除性,时间复杂度O(log₃n)。文章还复习了Python基础语法,包括取模运算和整除赋值操作。该解法简洁高效,适合初学者理解数学问题转化为编程算法的思路。
2025-07-24 00:00:00
248
原创 LeetCode|Day22|231. 2 的幂|Python刷题笔记
文章摘要 本文介绍了LeetCode简单题231「2的幂」的高效解法。通过位运算技巧n & (n - 1) == 0可以快速判断一个正整数是否为2的幂,因为2的幂在二进制表示中仅含一个1。解法时间复杂度为O(1),需注意处理n>0的边界条件。这是利用位运算特性的经典案例,适合巩固基础算法知识。
2025-07-23 00:00:00
265
原创 LeetCode|Day21|204. 计数质数|Python刷题笔记
本文介绍了LeetCode简单题204「计数质数」的Python解法。使用经典的埃拉托色尼筛法,通过标记非质数的方式高效统计小于n的质数数量。核心思路是从2到√n遍历,将其倍数标记为非质数,最后统计布尔数组中True的个数。算法时间复杂度为O(n log log n)。文章还回顾了基础语法点如平方根计算和布尔数组求和,并提供了完整代码实现。这是LeetCode简单题百日计划系列的第21题。
2025-07-22 00:00:00
345
原创 LeetCode|Day20|9. 回文数|Python刷题笔记
文章摘要(150字内): LeetCode第9题要求判断整数是否为回文数。本文介绍了Python的字符串反转解法:将整数转为字符串后,利用切片[::-1]反转并与原字符串比较。负数直接返回False,正数通过str(x) == str(x)[::-1]快速判断回文特性。该解法简洁高效,充分利用了Python的切片特性,时间复杂度O(n)。文中还回顾了基础语法:类型转换str()、字符串反转切片和相等比较。属于LeetCode简单题系列,适合算法初学者练习字符串操作。
2025-07-21 00:00:00
528
原创 LeetCode|Day19|14. 最长公共前缀|Python刷题笔记
本文介绍了LeetCode第14题「最长公共前缀」的Python解法。题目要求找出字符串数组中的最长公共前缀,若无则返回空字符串。采用横向扫描法,首先假设第一个字符串为前缀,然后遍历后续字符串并逐步缩短前缀,直到所有字符串均以该前缀开头。若前缀被缩减为空,则返回空字符串。关键点包括:使用startswith()方法检查前缀,通过切片[:-1]缩短前缀,以及从数组第二个元素开始遍历。该解法简洁高效地解决了问题。
2025-07-20 00:00:00
395
原创 LeetCode|Day18|20. 有效的括号|Python刷题笔记
本文介绍了LeetCode简单题20「有效的括号」的Python解法。题目要求判断字符串中的括号是否有效匹配,包括顺序正确和成对出现。作者使用栈和字典配合的解法:遇到左括号入栈,遇到右括号则检查栈顶是否匹配。核心代码仅10行,通过字典存储括号对应关系简化匹配逻辑。最后判断栈是否为空即可验证有效性。文章还复习了栈的基本操作和字典访问语法,属于括号匹配类问题的经典解法。
2025-07-19 00:00:00
256
原创 LeetCode|Day17|242. 有效的字母异位词|Python刷题笔记
摘要: LeetCode第242题要求判断两个字符串是否为字母异位词(字符相同但顺序不同)。本文提出使用Python的collections.Counter快速统计字符频率,通过比较计数器结果即可判断。解法简洁高效(时间复杂度O(n)),特别适合刷题场景。文中还复习了Counter的基础用法和字典比较特性,并附有示例代码。该题属于【LeetCode简单题百日计划】系列,可查看系列总目录获取更多题目解析。
2025-07-18 00:00:00
357
原创 LeetCode|Day16|387. 字符串中的第一个唯一字符|Python刷题笔记
文章摘要: 本文介绍了LeetCode简单题387——字符串中的第一个唯一字符的解法。题目要求找到字符串中第一个不重复字符的索引,否则返回-1。核心解法使用collections.Counter统计字符频次,然后顺序遍历找出首个频次为1的字符。该方法时间复杂度O(n),空间复杂度O(1)。文中包含Python代码实现、解题思路解析及基础语法回顾(Counter、enumerate等),属于【LeetCode简单题百日计划】系列第16篇。
2025-07-17 12:00:00
202
原创 LeetCode|Day15|125. 验证回文串|Python刷题笔记
【LeetCode|Day15|125. 验证回文串题解】 本文介绍了LeetCode简单题125"验证回文串"的Python解法。题目要求判断字符串是否为回文,忽略非字母数字字符和大小写差异。作者采用双指针思路,首先通过列表推导式过滤非法字符并统一为小写,然后直接比较处理后的列表与其反转版本是否一致。解法简洁高效,仅用两行代码实现,并复习了字符串处理的基本方法:isalnum()判断字符合法性、lower()转换大小写、[::-1]反转操作。适合初学者学习Python列表处理和字符串操
2025-07-17 00:00:00
359
原创 LeetCode|Day14|122. 买卖股票的最佳时机 II|Python刷题笔记
本文介绍了 LeetCode 122 题「买卖股票的最佳时机 II」的解法。题目要求计算在多次买卖股票的情况下能获得的最大利润。采用贪心算法,只要今天价格比昨天高就卖出赚取差价,并将所有上涨段落的利润累加。Python 实现仅需遍历一次数组,时间复杂度 O(n),空间复杂度 O(1)。关键点在于将连续上涨分解为多个单日上涨的叠加。
2025-07-16 12:00:00
241
原创 LeetCode|Day13|88. 合并两个有序数组|Python刷题笔记
摘要: LeetCode 88题要求合并两个有序数组到nums1中,保持非递减顺序。采用双指针从后向前合并的解法,避免覆盖未处理元素。定义指针i、j分别指向两数组有效尾部,比较元素大小后从尾部开始填充。若nums2有剩余元素,直接填充到nums1前部。时间复杂度O(m+n),空间复杂度O(1)。关键点:逆向遍历、原地修改、切片赋值语法。
2025-07-16 00:00:00
361
原创 LeetCode|Day12|58. 最后一个单词的长度|Python刷题笔记
本文介绍了LeetCode第58题"最后一个单词的长度"的Python解法。题目要求返回字符串中最后一个单词的长度,忽略末尾空格。作者使用strip()去除空格后,用split()拆分单词列表,取最后一个元素计算长度。方法简洁高效,适合初学者掌握字符串处理和列表操作的基本语法。文章还提示了相关基础语法复习要点,并提供了系列目录链接。
2025-07-15 12:00:00
548
原创 LeetCode|Day11|557. 反转字符串中的单词 III|Python刷题笔记
本文介绍了LeetCode第557题「反转字符串中的单词 III」的Python解法。题目要求在保持单词顺序不变的情况下,反转字符串中每个单词内部的字符。解法通过split()分词,用[::-1]切片反转每个单词,再用join()拼接成字符串。代码简洁高效,仅需一行即可完成。文章还回顾了split、字符串切片和join等基础语法,适合Python初学者学习字符串处理技巧。
2025-07-15 00:00:00
311
原创 LeetCode|Day10|917. 仅仅反转字母|Python刷题笔记
摘要: LeetCode 917题要求仅反转字符串中的字母字符,其他字符保持原位。使用双指针法:初始化左右指针分别指向字符串两端,向中间移动。当左右指针都指向字母时交换位置,否则跳过非字母字符。通过isalpha()判断字母,用列表操作修改字符位置后拼接返回。时间复杂度O(n),空间复杂度O(n)。 关键词: 双指针、字符串反转、字母判断、LeetCode简单题
2025-07-14 12:00:00
376
原创 LeetCode|Day9|976. 三角形的最大周长|Python刷题笔记
摘要: LeetCode 976题要求从数组中找到能构成三角形的三个数,使其周长最大。解法采用降序排序后贪心判断,满足两边之和>第三边即可返回周长。时间复杂度O(nlogn),空间O(1)。关键点:三角形性质、排序优化、边界处理。示例:[2,1,2]→5。代码使用Python内置排序和遍历实现。
2025-07-14 00:00:00
378
原创 LeetCode|Day8|1047. 删除字符串中的所有相邻重复项|Python刷题笔记
本文介绍了LeetCode第1047题「删除字符串中的所有相邻重复项」的解法。题目要求删除字符串中所有相邻重复字符,最终返回处理后的字符串。作者使用栈结构来高效解决该问题,遍历字符串时,若当前字符与栈顶相同则弹出,否则压入栈。最后将栈内字符拼接为结果。该方法的时间复杂度为O(n),空间复杂度O(n)。文章还复习了Python栈操作的基本语法,如append、pop和join等。属于LeetCode简单题系列,适合算法入门练习。
2025-07-13 18:00:00
388
原创 LeetCode|Day7|1342. 将数字变成 0 的操作次数|Python刷题笔记
本文介绍了LeetCode简单题1342的解法,题目要求计算将非负整数num变为0所需的操作次数。操作规则为:偶数时除以2,奇数时减1。作者采用简单模拟的方法,通过循环判断num的奇偶性并进行相应操作,同时计数步骤。该解法时间复杂度为O(log n),效率较高。文中还复习了基础语法如取模运算、整数除法和while循环的使用。示例输入14的输出为6步,详细解释了每一步的操作过程。文章最后提供了系列总目录链接。
2025-07-13 08:13:49
426
原创 LeetCode|Day6|1446. 连续字符|Python刷题笔记
本文介绍了LeetCode简单题1446「连续字符」的解法。题目要求找到字符串中最长连续字符的出现次数。解法采用遍历字符串的方式,记录当前连续字符的个数并在字符变化时更新最大值。代码使用Python实现,时间复杂度O(n),空间复杂度O(1)。文章还复习了字符串索引、max函数等基础语法,并提供了系列总目录链接。
2025-07-10 00:00:00
268
原创 LeetCode|Day5|653. 两数之和 IV – 输入 BST(变体)|Python刷题笔记
文章摘要 题目: LeetCode 653. 两数之和 IV – 输入 BST(变体) 难度: 简单 给定二叉搜索树(BST)和目标值 k,判断是否存在两个节点值之和等于 k。 解法: 使用中序遍历获取有序节点值,遍历时用哈希集合检查是否存在补数(k - val)。时间复杂度 O(n),空间复杂度 O(n)。 示例代码: def findTarget(root, k): vals = inorder_traversal(root) # 中序遍历 seen = set() for val in vals: i
2025-07-09 00:00:00
264
原创 LeetCode|Day4|709. 转换成小写字母|Python刷题笔记
本文介绍了LeetCode简单题709「转换成小写字母」的Python解法。题目要求将字符串中的所有大写字母转换为小写。核心解法是直接使用Python内置的str.lower()方法,该方法会返回新的小写字符串。文章提示字符串在Python中是不可变类型,转换操作会生成新对象而非原地修改。同时复习了相关基础语法:str.lower()方法、字符串不可变性以及函数类型注解的标准写法。该题属于【LeetCode简单题百日计划】系列,链接提供了完整目录。
2025-07-08 00:00:00
273
原创 LeetCode|Day3|121. 买卖股票的最佳时机|Python刷题笔记
这是一篇关于LeetCode股票买卖问题的题解文章,采用贪心算法解决121题"买卖股票的最佳时机"。作者通过记录历史最低价并在遍历时计算当前利润的方式,在O(n)时间内找到最大利润。解法核心思路是维护两个变量:min_price记录最小买入价,max_profit记录最大利润。文章包含题目简介、Python代码实现和思路解析,适合算法初学者学习基础贪心策略和数组遍历技巧。 关键词:LeetCode、股票问题、贪心算法、Python、时间复杂度O(n)
2025-07-07 00:00:00
281
原创 LeetCode|Day2|704. 二分查找|Python刷题笔记
本文介绍了LeetCode第704题「二分查找」的Python解法。题目要求在一个升序整数数组中查找目标值,返回其索引,不存在则返回-1。解法采用二分查找算法,通过维护左右指针逐步缩小搜索范围,时间复杂度为O(log n)。示例代码展示了具体实现,每次计算中间位置并与目标值比较,调整左右边界直至找到目标或确定不存在。该方法比暴力搜索更高效,适合处理有序数组的查找问题。
2025-07-06 08:00:00
313
原创 [特殊字符] LeetCode 简单题百日计划|刷题系列总目录
本文介绍了一个为期100天的LeetCode简单题刷题计划,旨在通过每日练习掌握Python解题技巧。计划涵盖数组、字符串、哈希等基础题型,从易到难循序渐进。每道题提供最简Python解法,并附详细题解和语法回顾。文章包含完整100天题目列表,建议按顺序学习,适合编程新手系统入门算法。系列持续更新,可作为每日算法练习指南。
2025-07-05 08:00:00
480
原创 LeetCode|Day1|2235. 两整数相加|Python刷题笔记
摘要: 本文介绍了LeetCode简单题#2235《两整数相加》的Python解法。题目要求计算两个整数的和,解法直接使用加法运算符即可完成。作者指出该题作为入门题目,可以帮助新手快速建立信心,并附上了系列目录链接。全文简洁明了,重点突出解题核心思路。 (字数:98字)
2025-07-05 08:00:00
216
原创 # Linux学习笔记 - 4
本篇介绍了 Linux 中的root 用户操作用户与用户组管理权限标识解析以及chmod/chown 命令的用法。
2025-02-20 08:00:00
1783
原创 Linux文件查看神器:less命令高效使用技巧
在Linux运维、软件开发及日常系统管理中,文件查看是最基础却至关重要的操作。当面对动辄上GB的日志文件时,传统cat命令的内存溢出问题常常令人头痛,而more命令的单向操作限制也让人束手束脚。作为Linux系统工程师日常使用频率TOP5的命令工具,less以"一次加载一屏"的独特设计,成为大文件查看的终极解决方案。
2025-02-19 14:00:00
272
原创 Linux学习笔记 - 3
本篇介绍了Linux中的一些进阶命令,包括whichfindgrepecholesstail以及管道符的使用。这些命令在日常系统管理和文件操作中非常实用,尤其是less和管道符的组合,能够大大提高工作效率。
2025-02-18 14:08:13
1406
原创 Linux学习笔记 - 2
本篇介绍了Linux中常用的文件操作命令,包括创建(mkdir/touch)、查看(cat/more)、复制(cp)、移动(mv)和删除(rm)。同时强调了路径的使用技巧和注意事项。
2025-02-18 13:58:17
462
空空如也
KEIL中LED.c文件无法与所有.h文件链接的原因
2023-05-26
stm32HAL实现按键组合
2023-03-28
TA创建的收藏夹 TA关注的收藏夹
TA关注的人