python 回文链表
生活随笔
收集整理的這篇文章主要介紹了
python 回文链表
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
| 回文鏈表
給你一個單鏈表的頭節點 head ,請你判斷該鏈表是否為回文鏈表。如果是,返回 true ;否則,返回 false 。
輸入:head = [1,2,2,1]
輸出:true
輸入:head = [1,2]
輸出:false
| 題解
# Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # self.next = next class Solution:"""解題思路:1.通過快慢指針找到回文鏈表的中間節點2.從中間節點起,開始反轉后面的節點3.遍歷反轉后的節點,判斷是否與原鏈表的值相等"""def isPalindrome(self, head: ListNode) -> bool:low = headfast = headp = head# 如果鏈表為空或者只有一個節點 直接返回Trueif head is None and head.next is None:return True# 通過快慢指針找到鏈表的中間位置while fast.next and fast.next.next:low = low.nextfast = fast.next.next# 通過頭插反轉后半段鏈表after_head = Nonecur = low.nextwhile cur:next_node = cur.next # 記錄后置節點位置cur.next = after_head # 頭指針賦值給當前節點的next節點after_head = cur # 把當前節點從新賦值給頭節點cur = next_node # 把后置節點賦值給當前節點,向后移位while after_head: # 循環遍歷后半段節點,判斷是否與前面節點相等if p.val != after_head.val:return Falseafter_head = after_head.next # 向后移動一個單位p = p.next # 向后移動一個單位return True總結
以上是生活随笔為你收集整理的python 回文链表的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 链表的反转
- 下一篇: python 奇偶链表