문제 

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.

 

 

입출력

Example 1:

Input: head = [1,2,3,4,5]

Output: [3,4,5]

Explanation: The middle node of the list is node 3.

 

Example 2:

Input: head = [1,2,3,4,5,6]

Output: [4,5,6]

Explanation: Since the list has two middle nodes with values 3 and 4, we return the second one.

 

 

제약

Constraints:

  • The number of nodes in the list is in the range [1, 100].
  • 1 <= Node.val <= 100

 

 

코드

var middleNode = function(head) {
    let currentNode = head;
    let length = 0;
    while(currentNode != null) {
        length++;
        currentNode = currentNode.next;
    }
    for(let i=0; i<parseInt(length/2); i++) {
        head = head.next;
    }
    return head;
};

 

설명:

먼저 Linked List의 전체 길이를 구하고, head를 List의 중앙으로 옮기기 위해 for문으로 List 길이의 절반만큼 돌면서 head를 이동시켰다.

List 길이의 절반을 계산할 때, length가 홀수인 경우 그냥 i<length/2를 하면 소숫점이 나오기 때문에 parseInt를 사용했다. 

 

 

+ Recent posts