Leetcode 707 Design Linked List, something wrong with my delete function when deleting at index 0?

I am currently stuck on Leetcode 707: Design a linked list, I think I have it mostly down but I am only passing 62/65 testcases. The problem seems to be with the deleteAtIndex function when I try to delete from index 0. I am using the 2 dummy doubly linked list approach. I thought my logic is correct, because if the index is already 0 it should skip the while loop and simply delete the first node correct? Except I tried testing it on my own and it does not work for some reason, maybe I am missing something simple? Any help would be great, thanks!

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<code>class ListNode:
def __init__(self, val):
self.val = val
self.next = None
self.prev = None
class MyLinkedList:
def __init__(self):
self.left = ListNode(0)
self.right = ListNode(0)
self.left.next = self.right
self.right.prev = self.left
def get(self, index: int) -> int:
cur = self.left.next
while index > 0 and cur != None:
index -= 1
cur = cur.next
if cur != None and cur != self.right and index == 0:
return cur.val
else:
return -1
def addAtHead(self, val: int) -> None:
new_node = ListNode(val)
after_head = self.left.next
after_head.prev = new_node
new_node.next = after_head
self.left.next = new_node
new_node.prev = self
def addAtTail(self, val: int) -> None:
new_node = ListNode(val)
before_end = self.right.prev
before_end.next = new_node
new_node.prev = before_end
self.right.prev = new_node
new_node.next = self.right
def addAtIndex(self, index: int, val: int) -> None:
new_node = ListNode(val)
cur = self.left.next
while index > 0 and cur != None:
index -= 1
cur = cur.next
if cur == None:
return
if cur.val == 0 and cur.next == None:
before_end = self.right.prev
before_end.next = new_node
new_node.prev = before_end
self.right.prev = new_node
new_node.next = self.right
elif cur.val == 0 and cur.prev == None:
after_head = self.left.next
after_head.prev = new_node
new_node.next = after_head
self.left.next = new_node
new_node.prev = self
else:
cur.prev.next = new_node
new_node.prev = cur.prev
cur.prev = new_node
new_node.next = cur
def deleteAtIndex(self, index: int) -> None:
cur = self.left.next
while index > 0 and cur != None:
index -= 1
cur = cur.next
if cur != None and cur != self.right and index == 0:
cur.prev.next = cur.next
cur.next.prev = cur.prev
</code>
<code>class ListNode: def __init__(self, val): self.val = val self.next = None self.prev = None class MyLinkedList: def __init__(self): self.left = ListNode(0) self.right = ListNode(0) self.left.next = self.right self.right.prev = self.left def get(self, index: int) -> int: cur = self.left.next while index > 0 and cur != None: index -= 1 cur = cur.next if cur != None and cur != self.right and index == 0: return cur.val else: return -1 def addAtHead(self, val: int) -> None: new_node = ListNode(val) after_head = self.left.next after_head.prev = new_node new_node.next = after_head self.left.next = new_node new_node.prev = self def addAtTail(self, val: int) -> None: new_node = ListNode(val) before_end = self.right.prev before_end.next = new_node new_node.prev = before_end self.right.prev = new_node new_node.next = self.right def addAtIndex(self, index: int, val: int) -> None: new_node = ListNode(val) cur = self.left.next while index > 0 and cur != None: index -= 1 cur = cur.next if cur == None: return if cur.val == 0 and cur.next == None: before_end = self.right.prev before_end.next = new_node new_node.prev = before_end self.right.prev = new_node new_node.next = self.right elif cur.val == 0 and cur.prev == None: after_head = self.left.next after_head.prev = new_node new_node.next = after_head self.left.next = new_node new_node.prev = self else: cur.prev.next = new_node new_node.prev = cur.prev cur.prev = new_node new_node.next = cur def deleteAtIndex(self, index: int) -> None: cur = self.left.next while index > 0 and cur != None: index -= 1 cur = cur.next if cur != None and cur != self.right and index == 0: cur.prev.next = cur.next cur.next.prev = cur.prev </code>
class ListNode:
    def __init__(self, val):
        self.val = val
        self.next = None
        self.prev = None

class MyLinkedList:

    def __init__(self):
        self.left = ListNode(0)
        self.right = ListNode(0)
        self.left.next = self.right
        self.right.prev = self.left

    def get(self, index: int) -> int:
        cur = self.left.next
        while index > 0 and cur != None:
            index -= 1
            cur = cur.next

        if cur != None and cur != self.right and index == 0:
            return cur.val
        else:
            return -1

    def addAtHead(self, val: int) -> None:
        new_node = ListNode(val)
        after_head = self.left.next
        after_head.prev = new_node
        new_node.next = after_head
        self.left.next = new_node
        new_node.prev = self

    def addAtTail(self, val: int) -> None:
        new_node = ListNode(val)
        before_end = self.right.prev
        before_end.next = new_node
        new_node.prev = before_end
        self.right.prev = new_node
        new_node.next = self.right

    def addAtIndex(self, index: int, val: int) -> None:
        new_node = ListNode(val)

        cur = self.left.next
        while index > 0 and cur != None:
            index -= 1
            cur = cur.next

        if cur == None:
            return
        
        if cur.val == 0 and cur.next == None:
            before_end = self.right.prev
            before_end.next = new_node
            new_node.prev = before_end
            self.right.prev = new_node
            new_node.next = self.right
        elif cur.val == 0 and cur.prev == None:
            after_head = self.left.next
            after_head.prev = new_node
            new_node.next = after_head
            self.left.next = new_node
            new_node.prev = self
        else:
            cur.prev.next = new_node
            new_node.prev = cur.prev
            cur.prev = new_node
            new_node.next = cur

    def deleteAtIndex(self, index: int) -> None:
        cur = self.left.next

        while index > 0 and cur != None:
            index -= 1
            cur = cur.next
        
        if cur != None and cur != self.right and index == 0:
            cur.prev.next = cur.next
            cur.next.prev = cur.prev

Trang chủ Giới thiệu Sinh nhật bé trai Sinh nhật bé gái Tổ chức sự kiện Biểu diễn giải trí Dịch vụ khác Trang trí tiệc cưới Tổ chức khai trương Tư vấn dịch vụ Thư viện ảnh Tin tức - sự kiện Liên hệ Chú hề sinh nhật Trang trí YEAR END PARTY công ty Trang trí tất niên cuối năm Trang trí tất niên xu hướng mới nhất Trang trí sinh nhật bé trai Hải Đăng Trang trí sinh nhật bé Khánh Vân Trang trí sinh nhật Bích Ngân Trang trí sinh nhật bé Thanh Trang Thuê ông già Noel phát quà Biểu diễn xiếc khỉ Xiếc quay đĩa Dịch vụ tổ chức sự kiện 5 sao Thông tin về chúng tôi Dịch vụ sinh nhật bé trai Dịch vụ sinh nhật bé gái Sự kiện trọn gói Các tiết mục giải trí Dịch vụ bổ trợ Tiệc cưới sang trọng Dịch vụ khai trương Tư vấn tổ chức sự kiện Hình ảnh sự kiện Cập nhật tin tức Liên hệ ngay Thuê chú hề chuyên nghiệp Tiệc tất niên cho công ty Trang trí tiệc cuối năm Tiệc tất niên độc đáo Sinh nhật bé Hải Đăng Sinh nhật đáng yêu bé Khánh Vân Sinh nhật sang trọng Bích Ngân Tiệc sinh nhật bé Thanh Trang Dịch vụ ông già Noel Xiếc thú vui nhộn Biểu diễn xiếc quay đĩa Dịch vụ tổ chức tiệc uy tín Khám phá dịch vụ của chúng tôi Tiệc sinh nhật cho bé trai Trang trí tiệc cho bé gái Gói sự kiện chuyên nghiệp Chương trình giải trí hấp dẫn Dịch vụ hỗ trợ sự kiện Trang trí tiệc cưới đẹp Khởi đầu thành công với khai trương Chuyên gia tư vấn sự kiện Xem ảnh các sự kiện đẹp Tin mới về sự kiện Kết nối với đội ngũ chuyên gia Chú hề vui nhộn cho tiệc sinh nhật Ý tưởng tiệc cuối năm Tất niên độc đáo Trang trí tiệc hiện đại Tổ chức sinh nhật cho Hải Đăng Sinh nhật độc quyền Khánh Vân Phong cách tiệc Bích Ngân Trang trí tiệc bé Thanh Trang Thuê dịch vụ ông già Noel chuyên nghiệp Xem xiếc khỉ đặc sắc Xiếc quay đĩa thú vị
Trang chủ Giới thiệu Sinh nhật bé trai Sinh nhật bé gái Tổ chức sự kiện Biểu diễn giải trí Dịch vụ khác Trang trí tiệc cưới Tổ chức khai trương Tư vấn dịch vụ Thư viện ảnh Tin tức - sự kiện Liên hệ Chú hề sinh nhật Trang trí YEAR END PARTY công ty Trang trí tất niên cuối năm Trang trí tất niên xu hướng mới nhất Trang trí sinh nhật bé trai Hải Đăng Trang trí sinh nhật bé Khánh Vân Trang trí sinh nhật Bích Ngân Trang trí sinh nhật bé Thanh Trang Thuê ông già Noel phát quà Biểu diễn xiếc khỉ Xiếc quay đĩa
Thiết kế website Thiết kế website Thiết kế website Cách kháng tài khoản quảng cáo Mua bán Fanpage Facebook Dịch vụ SEO Tổ chức sinh nhật