알고리즘

[LeetCode] Middle of the Linked List

유병각 2022. 4. 23. 20:36

[LeetCode] Middle of the Linked List

풀이_#1
fast 와 slow 사용 fast 는 2칸씩, slow 는 1칸씩 이동하므로 n 번의 반복뒤에는 fast 는 2n 칸, slow 는 n 칸에 있고 fast가 끝일경우(2n = len) slow(n = len/2) 는 중간에 위치하게됨.

# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution(object):
    def middleNode(self, head):
        """
        :type head: ListNode
        :rtype: ListNode
        """

        slow, fast = head, head

        while (fast and fast.next):
            slow = slow.next
            fast = fast.next.next

        return slow