작심삼일

[LeetCode] 876 | Middle of the Linked List | Python 본문

스터디/코테

[LeetCode] 876 | Middle of the Linked List | Python

yun_s 2022. 12. 5. 09:15
728x90
반응형

문제 링크: https://leetcode.com/problems/middle-of-the-linked-list/


문제

Given the head of a singly linked list, return the middle node of the linked list.

If there are two middle nodes, return the second middle node.


조건

  • The number of nodes in the list is in the range [1, 100].
  • 1 <= Node.val <= 100

내 풀이

리스트의 길이를 재서 N에 저장한다. (python index처럼 저장한다. ex. 길이가 1이면 N=0, 길이가 2면 N=1, ...)

절반 지점에 해당하는 값을 half로 저장한다.

이때, 리스트의 길이가 짝수일 때는(N이 홀수) 뒤의 값을 사용해야하기 때문에 N%2를 더해준다.

half에 해당하는 지점까지 리스트의 head를 이동한 뒤, 리턴한다.


코드

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def middleNode(self, head: Optional[ListNode]) -> Optional[ListNode]:
        N = 0
        nhead = head
        while nhead.next:
            nhead = nhead.next
            N += 1
        
        half = N//2 + N%2
        while half > 0:
            head = head.next
            half -= 1
        
        return head
728x90
반응형
Comments