Leetcode Java Middle of the Linked List
업데이트:
문제
코드
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
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;
}
}
결과
설명
- head의 중앙에 있는 ListNode를 반환하는 문제이다.
- 중앙에 두 ListNode가 존재하면 두 번째 ListNode를 반환한다.
-
slow는 한 단계 씩 이동하기 위한 ListNode이고, fast는 두 단계 씩 이동하기 위한 ListNode로 둘 다 head로 초기화한다.
-
fast와 fast의 다음 ListNode가 null이 아닐 때 까지 slow에 slow의 다음 ListNode를, fast에 fast의 다다음 ListNode를 넣어준다.
- 반복이 완료되면 head의 중앙에 위치한 slow를 주어진 문제의 결과로 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기