해당 포스팅은 릿코드 876번 Middle of the Linked List 풀이를 다룬다. 문제 링크
Given the head of a singly linked list, return the middle node of the linked list.
If there are two middle nodes, return the second middle node.
단일 연결 리스트의 head가 주어질 때 연결 리스트 중간 노드를 반환하라.
만약 중간 노드가 두 개 있는 경우(노드가 짝수 개) 두 번째 중간 노드를 반환하라.
/**
* Definition for singly-linked list.
* function ListNode(val, next) {
* this.val = (val===undefined ? 0 : val)
* this.next = (next===undefined ? null : next)
* }
*/
/**
* @param {ListNode} head
* @return {ListNode}
*/
var middleNode = function(head) {
let len = 0;
// input으로 주어진 링크드리스트의 head를 복제한다.
let node = head;
// 복제한 head를 이용해 (복제한) 링크드리스트를 loop를 돌려 길이를 구한다.
while (node !== null) {
len += 1;
node = node.next;
}
// 링크드리스트의 중간값을 변수 mid에 저장한다.
let mid = Math.floor(len/2);
// 링크드리스트의 head를 복제한 다음, 복제한 head를 mid만큼 뒤로 이동시킨다.
node = head;
for (let i=0; i < mid; i++) {
node = node.next;
}
return node;
};