문제
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를 사용했다.
'Coding > LeetCode' 카테고리의 다른 글
[LeetCode/JavaScript] 733. Flood Fill (easy) (0) | 2021.09.21 |
---|---|
[LeetCode/JavaScript] 3. Longest Substring Without Repeating Characters (medium) (0) | 2021.09.21 |
[LeetCode/C#] 7. Reverse Integer (medium) (0) | 2021.09.20 |
[LeetCode/C#] 1. Two Sum (easy) (0) | 2021.09.20 |
[LeetCode/JavaScript] 557. Reverse Words in a String III (easy) (0) | 2021.09.17 |