1. 算法刷题的价值与意义
作为一名程序员,算法刷题是提升编程能力的必经之路。我最近重新刷了LeetCode上的基础题125、122、130,并完成了进阶题65,这个过程让我对算法训练有了更深刻的认识。
算法刷题不仅仅是面试的敲门砖,更是培养编程思维的有效方式。通过反复练习同一道题目,我们能够发现之前忽略的细节,优化解法,甚至找到全新的思路。这种刻意练习对提升编程能力有着不可替代的作用。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 基础题125解析:验证回文串
2.1 题目要求与初步思路
LeetCode第125题要求我们判断一个字符串是否是回文串。回文串是指正读反读都相同的字符串,忽略大小写和非字母数字字符。我的第一反应是使用双指针法,一个从前往后,一个从后往前,逐个比较字符。
python复制def isPalindrome(s: str) -> bool:
left, right = 0, len(s) - 1
while left < right:
while left < right and not s[left].isalnum():
left += 1
while left < right and not s[right].isalnum():
right -= 1
if s[left].lower() != s[right].lower():
return False
left += 1
right -= 1
return True
2.2 优化与注意事项
在实际编写代码时,有几个关键点需要注意:
- 边界条件的处理:空字符串、全是非字母数字字符的情况
- 大小写统一:比较前需要转换为统一大小写
- 指针移动:确保指针不会越界
提示:这道题看似简单,但很容易忽略非字母数字字符的处理,建议在纸上画出指针移动的过程,确保逻辑正确。
3. 基础题122解析:买卖股票的最佳时机II
3.1 问题分析与贪心算法
第122题是经典的股票买卖问题,允许无限次交易,求最大利润。这道题的关键在于理解"只要今天的价格比昨天高,就进行交易"这一贪心策
