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 |