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个节点)测试一下,看一下整个算法的每一步,每一个变量是如何变化的,变化成什么样子了,为什么少了这句话就不正确了?当有了这句话,为什么就正确了?这句话完成了什么功能?


这就是我经常说的“调试代码”的过程。这个过程省不得。进步就在这个过程中。


如果你做了这样的调试,还想不明白,可以再来提问:你使用了怎样的测试用例,在哪一步,你认为程序的某个变量应该得到什么结果?实际上却是什么结果?你觉得不可能,不应该,和你想象的不一样。


继续加油!:)

1

算法与数据结构

波波老师5年集大成之作,算法与数据结构系统学习,考试、面试、竞赛通用

2638 学习 · 1091 问题

查看课程