LeetCode #6 (node) - 팰린드롬 연결리스트

ims·2021년 6월 24일
0

LeetCode

목록 보기
6/6

📌 문제

https://leetcode.com/problems/palindrome-linked-list/submissions/

주어진 linkedlist가 회문인지 판단하라.

📌 아이디어

deque에 담아놓고, popleft()pop() 을 비교해서 일치하지 않으면 False, loop를 빠져나오면 True를 return

list로 선언해서 pop(0)와 pop()을 비교할 수도 있는데, list의 경우 pop(0)연산을 한 뒤 나머지 요소들을 재정렬하는데 O(n)이 걸리므로 deque를 이용해야 한다.
( 정렬후 요소들이 왼쪽으로 shifting된다 )

📌 코드

# https://leetcode.com/problems/palindrome-linked-list/
from collections import deque


class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next

class Solution:
    def isPalindrome(self, head: ListNode) -> bool:
        q = deque()
        node = head
        while node:
            q.append(node.val)
            node=node.next
        while len(q)>1:
            if q.popleft() != q.pop():
                return False
        return True
profile
티스토리로 이사했습니다! https://imsfromseoul.tistory.com/ + https://camel-man-ims.tistory.com/

0개의 댓글