Problem
Singly Linked List 가 주어지면 리스트의 가장 중간부터 끝까지를 리턴하면 됩니다.
만약 List 의 길이가 짝수라면 뒤의 절반을 리턴합니다.
Solution
간단하게 two pointer 로 해결할 수 있습니다.
slow 는 한번, fast 는 두번 씩 전진하면 fast 가 끝에 도달했을 때 slow 의 위치가 List 의 중간입니다.
Java Code
class Solution {
public ListNode middleNode(ListNode head) {
ListNode slow = head;
ListNode fast = head;
while (fast != null && fast.next != null) {
slow = slow.next;
fast = fast.next.next;
}
return slow;
}
}'알고리즘 문제 > LeetCode' 카테고리의 다른 글
| [LeetCode Easy] Remove Element (Java) (0) | 2020.05.05 |
|---|---|
| [LeetCode Easy] Duplicate Zero (Java) (0) | 2020.05.03 |
| [LeetCode] Counting Elements (Java) (0) | 2020.04.09 |
| [LeetCode Easy] Word Pattern (Java) (1) | 2020.04.09 |
| [LeetCode Medium] Coin Change 2 (Java) (0) | 2020.04.09 |