抽空将自己 LeetCode 前 150 道源码整理出版了
https://github.com/begeekmyfriend/leetcode再复杂的题我都坚持用 pure C 手写的,最多一道大概 300 行吧,不容易。即使如此仍然有 5 道打出爆机(效率排名 100%,题目越复杂几率越高),要知道那可都是累计了好几年的老题了,可见全球范围内我的代码还是有不少闪光点的:-P
C 是没有 STL 的,只能自己造轮子。链表怎么写,hashmap 怎么写,我借鉴的是内核的 list.h,写法已经形成自己一套模式,看上去还算简洁,不像参考答案写得那样 hack,混乱不堪。关键是能解决问题,特别一些复杂的逻辑,运气好还能爆机。可见对于 C 来说,也不要从 0 开始写代码,要学会站在巨人的肩膀上。
用 C 刷 LeetCode 有个坑就是动态数组,个人经验是,尽量不要用 realloc 调用,会出现 runtime error,这应该算 LeetCode 平台的 bug。之前我被困扰了好久,后来终于想出了用手写 realloc 的办法,方法是,用两倍内存扩容,手动拷贝元素,释放原指针,赋值新指针。步骤很繁琐,但再也没出问题。
刷题就像打《街霸》,前 50 道被电脑虐得磕磕绊绊,最痛苦的时段;再 50 道你就有点感觉了,开始慢慢形成自己套招; 100 道之后一般能够应付各种难度,这时候主要靠直觉和意识了。
要不要继续刷看心情吧,刷题经验不见得看题量,也许回头我还会改进一下写过的代码。顺便赞一下 leetcode 选题眼光不错,一些看似考智力的问题,其实都有经典的数学背景。不过后期一些个人贡献的题目质量比较水,没多大价值。出好题也是要看学识背景的。
欢迎与大家切磋,共同改进。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/405467
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.