.給定乙個帶有頭結點 head 的非空單鏈表,返回鍊錶的中間結點。
如果有兩個中間結點,則返回第二個中間結點
示例 1:輸入:[1,2,3,4,5] 輸出:此列表中的結點 3 (序列化形式:[3,4,5]) 返回的結點值為 3 。
(測評系統對該結點序列化表述是 [3,4,5])。 注意,我們返回了乙個 listnode 型別的物件 ans,這樣: ans.val =
3, ans.next.val = 4, ans.next.next.val = 5, 以及 ans.next.next.next = null.
示例 2:一道非常簡單的鍊錶題(有點過於簡單了,,)開始的時候想的是先遍歷一遍鍊錶,得到鍊錶的長度從而得到中值位置,然後再遍歷到中止就可以了輸入:[1,2,3,4,5,6] 輸出:此列表中的結點 4 (序列化形式:[4,5,6]) 由於該列表有兩個中間結點,值分別為 3 和
4,我們返回第二個結點
**如下:
# definition for singly-linked list.
# class listnode:
# def __init__(self, x):
# self.val = x
# self.next = none
class
solution
:def
middlenode
(self, head: listnode)
-> listnode:
c=head
count=
1 half=
1while
(c.next
!=none):
c=c.
next
count=count+
1 count=
(count)//2
+1c=head
while
(half!=count)
: c=c.
next
half=half+
1return c
後來改進的時候發現在第一遍遍歷是可以用乙個順序表存進去,這樣每個節點和他的位置就是一一對應的關係,不用第二次遍歷就能提取中值了,不過這種方法要注意特殊值
**如下:
# definition for singly-linked list.
# class listnode:
# def __init__(self, x):
# self.val = x
# self.next = none
class
solution
:def
middlenode
(self, head: listnode)
-> listnode:
a=if(head.
next
==none):
return head
while
(head!=
none):
head=head.
next
return a[
(len
(a))//2
]
一道輕鬆的小題開啟了繁忙的一天~ 每日一練 8
實現刪除字串 現次數最少的字元,若多個字元出現次數一樣,則都刪除。輸出刪除這些單詞後的字串,字串中其它字元保持原來的順序。輸入描述 字串只包含小寫英文本母,不考慮非法輸入,輸入的字串長度小於等於20個位元組。輸出描述 刪除字串 現次數最少的字元後的字串。示例1abcdddd include incl...
每日一題,每日一練 3矩形重疊
836.矩形重疊 矩形以列表 x1,y1,x2,y2 的形式表示,其中 x1,y1 為左下角的座標,x2,y2 是右上角的座標。如果相交的面積為正,則稱兩矩形重疊。需要明確的是,只在角或邊接觸的兩個矩形不 構成重疊。給出兩個矩形,判斷它們是否重疊並返回結果。示例 1 輸入 rec1 0,0,2,2 ...
每日一練(13) 反轉鍊錶
title 每日一練 13 反轉鍊錶 categories 劍指offer tags 每日一練 date 2022 01 26 定義乙個函式,輸入乙個鍊錶的頭節點,反轉該鍊錶並輸出反轉後鍊錶的頭節點。示例 輸入 1 2 3 4 5 null 輸出 5 4 3 2 1 null 限制 0 節點個數 5...