0408 TIL

looggi·2023년 4월 8일
0

TILs

목록 보기
56/114
post-thumbnail

leetcode 문제풀기

➡️ 203. Remove Linked List Elements

class Solution:
    def removeElements(self, head: Optional[ListNode], val: int) -> Optional[ListNode]:
        new=ListNode() # val=0
        cur=new
        while head:
            if head.val==val:
                head=head.next
            else:
                cur.next=head
                cur=cur.next
                head=head.next
        if cur.next and cur.next.val==val:
            cur.next=None
                
        return new.next

마지막 if문이 없으면 마지막으로 들어오는 노드에 의해서 뒤에 val과 같은 값을 가진 노드가 같이 따라 들어온다

class Solution:
    def removeElements(self, head: Optional[ListNode], val: int) -> Optional[ListNode]:
        dummy=ListNode(next=head)
        prev,curr=dummy,head
        while curr:
            if curr.val==val:
                nxt=curr.next
                prev.next=nxt
                curr=nxt
            else:
                prev=curr
                curr=curr.next
        return dummy.next

ListNode(next=head) next에 head를 이렇게 넣어줄 수도 있다
prevcurr은 각각 dummy와 head를 가리키는 포인터다

curr값이 존재하는 동안
값이 val과 같으면
curr.nextnxt에 넣어주고
nxt를 dummy를 가리키는 prev.next에 넣어준다
curr.val==val이므로 nxtcurr에 넣어준다

같지 않다면
curr을 그냥 prev에 넣어주고 (head to dummy)
curr.next를 curr에 넣어준다

profile
looooggi

0개의 댓글