Leetcode 148
来源:3-1 链表最经典的问题:翻转链表
我要进大厂
2022-12-20 19:44:34
Leetcode 官方解答里的 第一种解法当中
if (head.next == tail){head.next = null;
return head;
}
这里是不是多此一举? 既然头节点的下个节点为尾巴,而尾巴为空。 为什么还要进行赋纸?
1回答
liuyubobobo
2022-12-21
这是一个非常好的练习。
如果这句话是“多此一举”,那么你删除这句话,整个程序应该也是正确的。实际删除试试看,整个程序是否是正确的?
如果发现整个程序不再正确了,使用一个小的测试用例(比如只有2-3个节点)测试一下,看一下整个算法的每一步,每一个变量是如何变化的,变化成什么样子了,为什么少了这句话就不正确了?当有了这句话,为什么就正确了?这句话完成了什么功能?
这就是我经常说的“调试代码”的过程。这个过程省不得。进步就在这个过程中。
如果你做了这样的调试,还想不明白,可以再来提问:你使用了怎样的测试用例,在哪一步,你认为程序的某个变量应该得到什么结果?实际上却是什么结果?你觉得不可能,不应该,和你想象的不一样。
继续加油!:)
相似问题