
Day 5。
今天两道题分别是 回文数判断 和 盛最多水的容器。
一道偏数字处理,一道偏双指针贪心。
看起来题型跨度不小,但其实都在训练一件事:
如何利用题目的性质,把暴力做法优化掉。
今天的关键词:回文判断、双指针、贪心、空间优化。
🧠 LeetCode 9 – Palindrome Number
💡 思路总结
这题要求判断一个整数是不是回文数。
比如:
121→true-121→false10→false
你的做法很直接:
- 先排除负数
- 复制一个原数
x_ - 把它反转
- 最后判断反转结果是否等于原数
这个思路非常自然,也很好理解。
💻 代码实现
class Solution {
public:
bool isPalindrome(int x) {
long long result = 0 ;
if(x < 0)return false;
long long x_ = x;
while(x_!= 0 ){
result = result*10 + x_%10;
x_ /= 10;
}
return result==x;
}
};
📌 知识点总结
1️⃣ 负数一定不是回文数
因为负号只会出现在最前面,不可能“左右对称”。
所以这句非常关键:
if(x < 0) return false;
2️⃣ 数字反转技巧复用
你这里其实复用了 Day 4 的核心技巧:
result = result * 10 + x_ % 10;
x_ /= 10;
这说明你已经开始把前面的做题经验串起来了,这很重要。
3️⃣ 这题还能继续优化
你现在这版是完全可过的。
不过这题还有一个更巧的点:
不需要把整个数字都反转,只反转后一半就行。
因为如果整个数都反转,虽然能做,但会多一些计算。
更优雅的写法是:
- 每次取末位加入
reverted - 当
x <= reverted时停止 - 最后比较前半和后半是否相等
这样可以避免完整反转,也更贴近这题本身的思维。
不过对于 Day 5 来说,你当前这版已经很不错,思路清晰,代码也干净。
🌊 LeetCode 11 – Container With Most Water
💡 思路总结
这题要求从数组中选两根柱子,使它们和横轴组成的容器装最多的水。
面积公式其实就是:
面积 = min(height[l], height[r]) * (r - l)
你的做法是经典正解:
- 左右双指针
- 每次计算当前面积
- 然后移动较短的那根柱子
这题最关键的不是公式,而是:
为什么移动较短板才有可能让答案变大
💻 代码实现
class Solution {
public:
int maxArea(vector<int>& height) {
//找到数组中第二大的数x,return x*x;
int l = 0;
int r = height.size() - 1;
int maxans = 0;
while(l < r){
int ares = min(height[l],height[r]) * (r - l);
if(maxans < ares)maxans = ares;
if(height[l] < height[r]) l++;
else r--;
}
return maxans;
}
};
📌 知识点总结
1️⃣ 暴力能做,但太慢
最朴素的方法是枚举所有两条边:
- 左边一根
- 右边一根
- 算面积
- 取最大值
这样时间复杂度是 O(n^2)。
而双指针能优化到 O(n)。
2️⃣ 为什么移动短板
假设当前:
- 左边高度较短
- 右边高度较高
当前容器高度由短板决定。
这时候如果你移动高板:
- 宽度变小
- 短板没变高
- 面积通常不可能更优
所以正确策略是:
if(height[l] < height[r]) l++;
else r--;
也就是:
谁短就移动谁
这是这题的贪心核心。
3️⃣ 双指针的本质
这题不是单纯“两个指针夹逼”,而是:
- 利用单调缩小搜索范围
- 每一步都丢弃不可能成为最优解的状态
这就是双指针和贪心结合的经典味道。
🧩 今日总结
| 题目 | 核心思想 |
|---|---|
| LeetCode 9 | 数字反转 + 回文判断 |
| LeetCode 11 | 双指针 + 贪心 |
今天的两道题很有代表性:
- 一道训练你对数字的处理能力
- 一道训练你对“优化搜索范围”的理解
🧠 今日收获
今天可以记住两个非常经典的模型。
回文数判断
常见思路:
- 转字符串判断
- 数字反转判断
- 只反转一半优化判断
你现在已经掌握第二种了。
双指针容器题
核心结论:
面积由短板决定
想让面积变大,只能尝试换掉短板
这个思想以后在很多双指针题里都能看到。
💬 写给自己的话
Day 5 了。
五天看起来不长,
但真正难得的是:你已经在持续输出了。
刷题最厉害的地方,不是某一天突然开窍,
而是你每天都在积累一点点:
- 会一个模板
- 懂一种思想
- 少犯一个错误
这就是进步。
别急着和别人比题量,
先让自己保持节奏。
能稳稳地走下去,本身就已经很强了。
继续坚持,继续总结,继续写。
你的题感,正在一点点长出来。
阿玉,Day 5,继续冲。
—— 刷题第 5 天
