알고리즘

[LeetCode] 234. Palindrome Linked List

유병각 2022. 4. 24. 00:30

[LeetCode] 234. Palindrome Linked List

풀이_#1

공간복잡도 O(1), 시간복잡도 O(N) 의 풀이

# 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 isPalindrome(self, head):
        """
        :type head: ListNode
        :rtype: bool
        """
        slow, fast = head, head
        rev = None
        before = None
        while(fast and fast.next):
            fast = fast.next.next
            rev = slow
            slow = slow.next
            rev.next = before
            before = rev


        if (fast):
            type = "odd"
        else:
            type = "even"

        if (type == "odd"):
            slow = slow.next

        while (slow and rev):
            print(slow.val, rev.val)
            if (slow.val != rev.val):
                return False
            slow = slow.next
            rev = rev.next
        return True