876 鍊錶的中間節點

2021-10-12 10:35:31 字數 1010 閱讀 3420

題目描述:

給定乙個頭結點為 head 的非空單鏈表,返回鍊錶的中間結點。如果有兩個中間節點,則返回第二個中間結點。

示例1:

輸入:[1,2,3,4,5]

輸出:此列表中的結點 3 (序列化形式:[3,4,5])

示例2:

輸入:[1,2,3,4,5,6]

輸出:此列表中的結點 4 (序列化形式:[4,5,6])

由於該列表有兩個中間結點,值分別為 3 和 4,我們返回第二個結點。

解題思路:

1.單指標法

首先我們可以先求出鍊錶的長度n,然後對鍊錶進行遍歷到n/2處,即為所求節點。

**:

/**

* definition for singly-linked list.

* public class listnode

* }*/class

solution

return temp;

}//獲取鍊錶長度

public

static

intgetlength

(listnode head)

//輔助節點

listnode temp = head;

int length =0;

while

(true

) length++

; temp = temp.next;

}return length;

}}

2.雙指標法(快慢指標法)

用兩個指標 slow 與 fast 一起遍歷鍊錶。slow 一次走一步,fast 一次走兩步。那麼當 fast 到達鍊錶的末尾時,slow 必然位於中間。

**:

class

solution

return slow;

}}

LeetCode鍊錶 876鍊錶的中間節點

給定乙個帶有頭結點 head 的非空單鏈表,返回鍊錶的中間結點。如果有兩個中間結點,則返回第二個中間結點。示例 1 輸入 1,2,3,4,5 輸出 此列表中的結點 3 序列化形式 3,4,5 返回的結點值為 3 測評系統對該結點序列化表述是 3,4,5 注意,我們返回了乙個 listnode 型別的...

LeetCode 876 鍊錶的中間節點

給定乙個帶有頭結點 head 的非空單鏈表,返回鍊錶的中間結點。如果有兩個中間結點,則返回第二個中間結點。示例 1 輸入 1,2,3,4,5 輸出 此列表中的結點 3 序列化形式 3,4,5 返回的結點值為 3 測評系統對該結點序列化表述是 3,4,5 注意,我們返回了乙個 listnode 型別的...

leetcode876 鍊錶的中間節點

給定乙個帶有頭結點head的非空單鏈表,返回鍊錶的中間結點 如果有兩個中間結點,則返回第二個中間結點。輸入 1,2,3,4,5,6 輸出 此列表中的結點 4 利用快慢指標,fast指標,每次移動兩步,慢指標每次移動兩步,當快指標,移動到鍊錶尾部的時候,慢指標此時正在,中間的位置,當鍊表的結點數為奇數...