每日一題,每日一練。8 鍊錶的中間結點

2021-10-04 07:04:51 字數 1804 閱讀 2654

.

給定乙個帶有頭結點 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...