[leetcode 876] Middle of the Linked List
876. Middle of the Linked List
해결 과정
느린 포인터와 빠른 포인터 2개를 사용한다.
빠른 포인터가 null
(짝수 케이스) 또는 빠른 포인터.next 가 null
(홀수 케이스) 일때까지, 빠른 포인터는 느린 포인터에 2배씩 이동한다.
[sample]
- 짝수 케이스: [1,2,3,4] -> [3,4]
- 홀수 케이스: [1,2,3,4,5] -> [3,4,5]
코드
fun middleNode(head: ListNode?): ListNode? {
var slow = head
var fast = head
while(fast!= null && fast.next!=null) {
slow = slow?.next
fast = fast?.next?.next
}
return slow
}
배운 점
- 홀수/짝수 케이스를 나누어 생각
- 1/N 지점의 linked list 도 비슷하게 구현 가능할 것이다.
Leave a comment