一年坚持学习 LeetCoding
那是2023年9月,变革的气息弥漫。我正处于待业状态,而巧合的是,谷歌刚刚在肯尼亚内罗毕掀起了一波招聘热潮。我偶然发现了谷歌Foobar挑战赛,这是一个我之前听说过的编程挑战赛。凭借十年的编程经验,我觉得是时候尝试一下了。
第一个挑战就像热身——一道二分查找题,感觉就像慢跑一样轻松。第二道和第三道题也同样轻松,既容易应对又引人入胜。但随后,第四个挑战出现了,感觉就像爬上了一座陡峭的山坡。这是我对图的初体验,而这个概念在我的职业生涯中一直被我忽略。
我感到有点不知所措,于是转向YouTube寻求指导。看着那些解释算法和概念的视频,我不禁感到一阵冒名顶替综合症。我做了这么久的软件工程师,怎么就没遇到过这些问题呢?
长话短说:一位谷歌招聘人员确实联系了我。之后我进行了一次电话面试和三轮面试。很遗憾,我没能通过。但这段经历点燃了我掌握数据结构和算法(DSA)的热情。
为了提升自己,我找到了 LeetCode 75 题库。我满怀热情地攻克它,做笔记,学习了大量的知识。半途,我拿到了今年的第一份合同,这意味着练习的时间更少了。为了不断鞭策自己,我开始挑战 LeetCode 的每日挑战。最终,我坚持了 365 天以上。
我在 Google Sheet(https://docs.google.com/spreadsheets/d/14GXh2RLulTo2vLeLzOuOqqCm5DQmCI-OK8MJvi9yJz8/edit?usp=sharing )中追踪了所有问题。我的系统很简单,如果我不能在规定时间内解答出来,就标记为不及格:
- 简单:25分钟内解决
- 中等:45分钟内解决
- 困难:1小时内解决
每隔两周,我都会重新审视一道做错的题目,再试一次。以下是我在过程中学到的东西:
有些话题比其他话题更常出现
数组(列表)
关注 (PrimeAgen)[ https://www.youtube.com/@ThePrimeTimeagen ]?那么你就知道数组是 DSA 的基础。一年过去了,我可以保证这一点。高效的数组操作至关重要。
字符串
字符串类似于数组,但有一个特点。在大多数语言中,它们是不可变的,这意味着任何更改都需要创建一个新的字符串。这是一个惨痛的教训。
哈希表
在映射数据时,哈希表是首选,因为它的插入和删除操作复杂度为 O(1)。起初,我以为哈希表很复杂,但后来我了解到它们本质上是对象。
排序
了解至少两种排序算法。冒泡排序是经典算法,代码编写速度很快。归并排序功能强大,但需要练习。还有桶排序——速度惊人,但占用空间较大。
贪婪算法
贪婪问题很有趣。它们允许在满足条件后提前退出。这类问题有时仍然会让我犯难,但解决起来很有成就感。
结论
DSA 很容易让人上瘾。一旦你开始发现规律,解决问题几乎就变成了机械式的。我希望有机会再去谷歌试试。在那之前,我会继续努力刷 LeetCode,精进这门技能。
文章来源:https://dev.to/davinderpalrehal/1-year-of-consist-leetcoding-26d0