这个起因非常神奇, 是我跟另一位 dalao 刷 LC 一道 EASY 题时产生的讨论.
题目 LC. 234 的 O(1)空间复杂度解法, 由于是三刷我们的思路完全一致, 都是利用回文对称性寻找中间点的同时将前半部分指向关系翻转后进行比较, 但代码风格的不同却造成了别人阅读代码的不同反应.
这是大佬的解答部分代码, 非常 pythonic, 可以看出使用了好几个骚操作来压缩代码.
fast, slow, pre = head, head, None
while fast and fast.next:
fast = fast.next.next
pre, slow.next, slow = slow, pre, slow.next
slow = slow.next if fast else slow
while slow and slow.val == pre.val:
pre, slow = pre.next, slow.next
return not pre
这是我的烂代码
fast = head
slow = head
pre = None
while fast and fast.next:
fast = fast.next.next
temp = slow
slow = slow.next
temp.next = pre
pre = temp
if fast:
slow = slow.next
while slow and slow.val == pre.val:
pre = pre.next
slow = slow.next
if not pre:
return True
else:
return False
核心逻辑完全一致, 但是在给一起刷题的一个大三实习生看时, 对方表示 dalao 的代码比较难懂, 反而觉得我的烂代码比较适合在工作中使用, 因为一眼就能看明白不会浪费时间.
感觉有点迷茫在工作中应该使用什么样的代码风格了...
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.