Leetcode 92 鍊錶之單鏈表中段反轉

2021-08-27 08:38:43 字數 971 閱讀 4135

主要思想:

1、先記錄煉表頭節點, 將鍊錶當前節點指標推進到開始逆序的節點,記錄此節點前乙個節點的指標p

2、開始逆序到指定節點,將逆序後的尾節點與剩餘節點相連

3、判斷開始逆序的節點是不是第乙個節點,是的話直接返回逆序後的頭節點,不是的話將將逆序後的頭節點與p相連,返回原頭節點。

**及測試結果如下:

class listnode:

def __init__(self, x):

self.val = x

self.next = none

def printlist(head):

while(head !=none):

print(head.val,end=',')

head=head.next

class solution:

def reversebetween(self, head, m, n):

'''計算需要翻轉的鍊錶的長度'''

len_cnt=n-m+1

cnt=1

roothead=head

head_tmp=none

'''當鍊表為空或鍊錶只有乙個元素的時候直接返回原鍊錶'''

if head==none or head.next==none:

return head

'''將鍊錶當前值的指向第m位'''

x=m-1

while x:

head_tmp=head

head=head.next

x=x-1

cnt=cnt+1

'''鍊錶長度小於m的時候直接返回原鍊錶'''

if cnt',end='')

x=solution()

rp=x.reversebetween(p1,3,5)

printlist(rp)

執行結果:1,2,3,4,5,6,-->1,2,5,4,3,6,

leetcode 92反轉鍊錶

反轉從位置 m 到 n 的鍊錶。請使用一趟掃瞄完成反轉。說明 1 m n 鍊錶長度。示例 輸入 1 2 3 4 5 null,m 2,n 4 輸出 1 4 3 2 5 null definition for singly linked list.public class listnode class...

LeetCode 92 反轉鍊錶 II

反轉從位置 m 到 n 的鍊錶。請使用一趟掃瞄完成反轉。說明 1 m n 鍊錶長度。示例 輸入 1 2 3 4 5 null,m 2,n 4 輸出 1 4 3 2 5 null 5ms definition for singly linked list.public class listnode c...

leetcode92 反轉鍊錶 II

反轉從位置 m 到 n 的鍊錶。請使用一趟掃瞄完成反轉。說明 1 m n 鍊錶長度。示例 輸入 1 2 3 4 5 null,m 2,n 4輸出 1 4 3 2 5 null思路 先往後遍歷找到需要反轉的節點作為起點 count m 然後按照劍指offer 反轉鍊錶 的思路,設定curr,pre,p...