反轉乙個單鏈表。
示例:輸入: 1->2->3->4->5->null
輸出: 5->4->3->2->1->null
之前應該做過,所以思路大體是清楚的:鍊錶要進行反轉,那麼當前節點的下乙個節點就要指向前乙個節點,因此我們至少需要兩個指標:last表示當前節點的前乙個節點,cur表示當前節點;而cur.next的值指向last時,cur的下乙個節點與cur的聯絡就斷了,因此我們還需要乙個臨時節點tem存放cur的下乙個節點。
# definition for singly-linked list.
# class listnode:
# def __init__(self, x):
# self.val = x
# self.next = none
class
solution
:def
reverselist
(self, head: listnode)
-> listnode:
last =
none
cur = head
tem = head
while tem !=
none
: tem = cur.
next
# 臨時節點
cur.
next
= last
last = cur
cur = tem
return last
# definition for singly-linked list.
# class listnode:
# def __init__(self, x):
# self.val = x
# self.next = none
class
solution
:def
reverselist
(self, head)
:"""
:type head: listnode
:rtype: listnode
"""p, rev = head,
none
while p:
rev, rev.
next
, p = p, rev, p.
next
return rev
完全不需要tem臨時節點!!巧妙地利用了python多元賦值。多元賦值的時候,右邊的值不會隨著賦值而改變。妙啊~ 劍指offer 刷題記錄 反轉鍊錶
輸入乙個鍊錶,反轉鍊錶後,輸出新鍊錶的表頭。思路 我們要正確反轉乙個鍊錶,就需要調整鍊錶指標的方向。如圖所示,要調整h,i,j之間的指標方向,現在假設h以前的都已經調整好了。那麼下一步,我們就要把i指向h,那麼這樣就會導致i到j之間的指標斷裂,不能遍歷到j。因此在調整結點i的指標之前,我們除了要知道...
Leetcode刷題記錄 反轉整數
方法有參考其他部落格 方法一 使用python中的字串 倒序 def reverse x if x 0 return 0 str x str x x if str x 0 x x str x 1 lstrip 0 rstrip 1表示倒序 x int x if 2 31 31 1 return x ...
OI刷題記錄
2014 4 18 poj3264 bzoj1699 balanced lineup rmq 2014 4 19 bzoj1012 jsoi2008 最大數maxnumber noi2004 鬱悶的出納員 bzoj3224 tyvj 1728 普通平衡樹 2014 4 20 bzoj1862 105...