Python3實現(xiàn)的判斷回文鏈表算法示例
本文實例講述了Python3實現(xiàn)的判斷回文鏈表算法。分享給大家供大家參考,具體如下:
問題:
請判斷一個鏈表是否為回文鏈表。
方案一:指針法
class Solution:
def isPalindrome(self, head):
"""
判斷一個鏈表是否是回文的,很自然的想法就是兩個指針,一個指針從前往后走,一個指針從后往前走,判斷元素值是否相同,這里要分幾個步驟來進行求解:
1、找到鏈表長度的一半,用追趕法,一個指針一次走兩步,一個指針一次走一步
2、將后一半數(shù)組轉置
3、判斷鏈表是否是回文鏈表
:type head: ListNode
:rtype: bool
"""
slow = fast = head
while fast and fast.next:
slow = slow.next
fast = fast.next.next
node = None
while slow:
nxt = slow.next
slow.next = node
node = slow
slow = nxt
while node and head:
if node.val != head.val:
return False
node = node.next
head = head.next
return True
方案二:列表法
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def isPalindrome(self, head):
"""
:type head: ListNode
:rtype: bool
"""
res = []
cur = head
while cur:
res.append(cur.val)
cur = cur.next
return res == res[: : -1]
更多關于Python相關內容感興趣的讀者可查看本站專題:《Python數(shù)據(jù)結構與算法教程》、《Python加密解密算法與技巧總結》、《Python編碼操作技巧總結》、《Python函數(shù)使用技巧總結》、《Python字符串操作技巧匯總》及《Python入門與進階經(jīng)典教程》
希望本文所述對大家Python程序設計有所幫助。
相關文章
python中的selenium安裝的步驟(瀏覽器自動化測試框架)
這篇文章主要介紹了python中的selenium安裝的步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-03-03
tf.nn.conv2d與tf.layers.conv2d的區(qū)別及說明
這篇文章主要介紹了tf.nn.conv2d與tf.layers.conv2d的區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-02-02
python 實現(xiàn)循環(huán)定義、賦值多個變量的操作
這篇文章主要介紹了python 實現(xiàn)循環(huán)定義、賦值多個變量的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03
python函數(shù)和python匿名函數(shù)lambda詳解
這篇文章主要介紹了python函數(shù)和python匿名函數(shù)lambda,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-09-09
解決python通過cx_Oracle模塊連接Oracle亂碼的問題
今天小編就為大家分享一篇解決python通過cx_Oracle模塊連接Oracle亂碼的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-10-10

