876.チェーンの中間ノード(JavaScript)(新しいテーマ)
ヘッダ付きのノードを指定します.
中間点が二つあると、第二の中間点に戻ります.
例1:与えられたチェーンの接合点の中間 考え方:
第一の方法:まず、シングルチェーンの全体を通して、長さを得て、中間位置を再遍歴します.
第二の方法:一回だけを通して、二つのポインタtailとmidを使って、tailは尾部を指して、tailは二歩ずつ歩いて、midは一歩歩きます.終わったら、テールが最後に行くのは
ステップは、tailが(2 n+1)ステップを行って、全部で偶数のノードであることを示しています.この時、midはまだ一歩を歩かなければなりません.
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, 。
ヒント:1
和 100
間に第一の方法:まず、シングルチェーンの全体を通して、長さを得て、中間位置を再遍歴します.
第二の方法:一回だけを通して、二つのポインタtailとmidを使って、tailは尾部を指して、tailは二歩ずつ歩いて、midは一歩歩きます.終わったら、テールが最後に行くのは
ステップは、tailが(2 n+1)ステップを行って、全部で偶数のノードであることを示しています.この時、midはまだ一歩を歩かなければなりません.
/**
* Definition for singly-linked list.
* function ListNode(val) {
* this.val = val;
* this.next = null;
* }
*/
/**
* @param {ListNode} head
* @return {ListNode}
*/
var middleNode = function(head) {
var tail = mid = head; //
var count = 0;
while (tail.next !== null) {
tail = tail.next;
count ++;
if (count === 2) {
mid = mid.next;
count = 0;
}
}
if (count === 1) {
mid = mid.next;
}
return mid;
};