1. 문제 및 예시

 

Given a non-empty, singly linked list with head node head, return a middle node of linked list. 
If there are two middle nodes, return the second middle node. 
  

Example 1: 
Input: [1,2,3,4,5] 
Output: Node 3 from this list (Serialization: [3,4,5]) 
The returned node has value 3.  (The judge's serialization of this node is [3,4,5]). 
Note that we returned a ListNode object ans, such that: 
ans.val = 3, ans.next.val = 4, ans.next.next.val = 5, and ans.next.next.next = NULL. 

 

Example 2: 
Input: [1,2,3,4,5,6] 
Output: Node 4 from this list (Serialization: [4,5,6]) 
Since the list has two middle nodes with values 3 and 4, we return the second one. 

** The number of nodes in the given list will be between 1 and 100.

 

 

 

2. 풀이

 

/**
 * Definition for singly-linked list.
 * function ListNode(val) {
 *     this.val = val;
 *     this.next = null;
 * }
 */
/**
 * @param {ListNode} head
 * @return {ListNode}
 */
var middleNode = function(head) {
    let arr = []
    let trav = function(node){
        arr.push(node);
        if(node.next){
            trav(node.next)
        }
    }
    trav(head);
    return arr[(arr.length %2 === 0) ? arr.length /2 : (arr.length-1) /2]    
};

 

 

 

3. 결과

 

15 / 15 test cases passed.
Status: Accepted
Runtime: 48 ms
Memory Usage: 33.7 MB

 

 

 

 

반응형

+ Recent posts