@vczh 说的对,上leetcode就是学习算法的。
应该关心算法的复杂度,考虑代码的鲁棒性,各种edge case。
短的代码不意味着更容易理解,也不意味着效率更高。
我不反感这种一行的python代码,有时我也会想能不能用python写个更简短的版本, 看到大神的骚操作也会很佩服。
有段时间在学python的迭代器,leetcode上有一道判断一个字符串是否是另一个字符串的子序列的题,看到有大神这么写:
当时就觉得这和我学的东西对应了起来,感觉非常开心,也加深了我对迭代器的印象。
讨论区本身就是大家交流的地方,这种做法也无可厚非,不必太较真。
但是有些行为就很low了
leetcode不是竞赛平台,我很反感用一些‘旁门左道’来减少程序运行时间。
前两天在做一道题时,自认为想出了一个最优的解法。结果只打败了95%的人,点开最快的代码看到这么个操作:
他把测试样例用来卡复杂度的例子(有20000个整数,O(n ^ 2)的会超时),直接返回结果(应该是线下算好的)......
leetcode会展示测试用例这一点其实有利有弊。
这样做的确非常快,只用了1ms。比我的O(n)的解法12ms快了非常多。但是呢,没有体现一点算法的应用。
原作者会写正常的解法吗?我想是会的。因为他对时间有偏执,这类人可能更会在意算法的速度。但这种写法无疑影响了时间的分布,相当于给一锅粥里加入了一粒屎。
还是那句话,来leetcode是学习算法的。