题目
请判断一个链表是否为回文链表:
时间复杂度O(n)
空间复杂度O(1)
快慢指针
快慢指针非常适合这种有中点的问题,并且在移动快慢指针的过程,将原有的链表拆成了两部分(注意:对原链表进行了操作,若为工程不该这么做,但是题目要求空间复杂度O(1)),然后再往后逐一比较。
注意点:
- 头插法
- 奇偶情况不同
def isPalindrome(self, head: ListNode) -> bool:
if(not head or not head.next): return True
pre = None # 和 slow 同步
curr = None # 记录新链的头(头插法)
fast =