刷《接雨水》有感

瑾浩2026-06-16· 约 3 分钟
独立页面
刷《接雨水》有感

最近在死磕“接雨水”这道经典算法题,卡了两天。一有空,我就拿着小卡片画图,反复推公式,试着找出那个隐藏的规律。

我以前做这种题,或者遇到类似没头绪的事情,都有一个毛病:只要没想明白,我就觉得一定是我还没找到那个“隐藏条件”。就像玩密室逃脱一样,在某一关里疯狂翻箱倒柜,死活不肯往前走。

第一次看到的时候,我的第一反应特别符合直觉:找坑。哪里低,哪里就是坑。于是我开始想:

  • 先找到左边一堵墙。
  • 再去右边找一堵足够高的墙。
  • 两个墙之间的区域,就是水。

这个思路其实没有错。因为人看现实世界,就是这么理解的。看到一个池塘,我们会先找它的边界。看到一个房间,我们会先确定它的范围。我们习惯先知道整体,再处理细节。

于是我吭哧吭哧地扫了一遍又一遍数组,总觉得信息不够,结果时间复杂度当场爆炸。

后来我去看了双指针的解法。程序员朋友看这题可能觉得很简单,就是维护左右最大值嘛。但对着题解跑了一遍,我突然反应过来我刚才为什么卡住了。

我不是缺条件,我是不敢相信手里的条件已经够了。

双指针的逻辑其实是这样的:当左边最大高度是 3,而右边最大高度是 5 时,左侧当前位置已经可以确定。因为决定它的不是右边未来还会出现什么,而是左右两侧中更矮的那一边。中间那些未知的地形和高度,突然变成了一个根本不用知道的东西。

这件事情让我想到以前刷很多算法题的时候。我经常有一个习惯:遇到不会的题,就觉得自己缺少一个关键点。好像:

  • 只要再多看一点。
  • 再多想五分钟。
  • 再多找到一个规律。
  • 答案就会出现。

但很多时候,真正的问题不是信息太少。而是我不愿意承认:现在的信息已经够用了。

这也挺像我平时做事经常陷入的死胡同。我总觉得事情得有一个“完整答案”,所以一直等,一直准备。写文章觉得资料不够,做项目觉得调研不足,总觉得再多看一点,就能把事情想得更周全一点。结果往往是死在无尽的等待上。就像那个在密室里死磕的人,最后发现房间里根本没有第二把钥匙。

“接雨水”这道题,我不愿意直接看答案,跟它较了两天劲。后来发现,卡住我的可能不是代码,而是一个坏习惯,这个坏习惯像面镜子一样,照出了我思维里那种想要“掌控全局”的虚假安全感

后来我自我反思了一下:

是不是某些算法优化很多时候不是获得更多信息,而是判断哪些信息已经不重要。

“接雨水”这道题,是我刷题以来少数几道让我完全失去方向感的题。我画了很多遍图,试了很多种思路,却一直陷在一个问题里:*我是不是还缺一个关键条件?*

后来才发现,我缺的不是条件,而是不敢相信手里的条件已经够了。

它最后留下来的,也不是双指针这个技巧,而是一个问题:

我现在拥有的信息,真的还不足以行动吗???

新文章

相关文章

留言