第一种做法,将链表放进数组里,然后在数组中间运用双指针从中间向左右开始比较,比较到有不同的这不是

但是第一种做法的空间不是O(1)

所以,第二种做法,上面有道题是反转整个链表,那么这里就可以只反转一半的链表,然后和剩下的一般进行比较,需要注意的是,可能有奇数个节点,可能有偶数个节点,这两种情况是要判断的。如果是奇数个节点,那么中间值在前半部分,这时候是要抛弃的,因为奇数个节点的话中间节点应该属于双方。

代码如下:

234.回文链表

 

我是翻转的前半部分,有些题解我看是翻转的后半部分,而且他们是用了快慢指针,感觉更方便

相关文章: