Skip to content

Commit 4f3a563

Browse files
authored
Create 0707-design-linked-list.py
1 parent 2b1ef04 commit 4f3a563

File tree

1 file changed

+67
-0
lines changed

1 file changed

+67
-0
lines changed

python/0707-design-linked-list.py

+67
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
class ListNode:
2+
def __init__(self, val):
3+
self.val = val
4+
self.prev = None
5+
self.next = None
6+
7+
class MyLinkedList:
8+
9+
def __init__(self):
10+
self.left = ListNode(0)
11+
self.right = ListNode(0)
12+
self.left.next = self.right
13+
self.right.prev = self.left
14+
15+
def get(self, index: int) -> int:
16+
cur = self.left.next
17+
while cur and index > 0:
18+
cur = cur.next
19+
index -= 1
20+
21+
if cur and cur != self.right and index == 0:
22+
return cur.val
23+
return -1
24+
25+
def addAtHead(self, val: int) -> None:
26+
node, prev, next = ListNode(val), self.left, self.left.next
27+
node.next, node.prev = next, prev
28+
next.prev = node
29+
prev.next = node
30+
31+
def addAtTail(self, val: int) -> None:
32+
node, prev, next = ListNode(val), self.right.prev, self.right
33+
node.next, node.prev = next, prev
34+
next.prev = node
35+
prev.next = node
36+
37+
def addAtIndex(self, index: int, val: int) -> None:
38+
next = self.left.next
39+
while next and index > 0:
40+
next = next.next
41+
index -= 1
42+
43+
if next and index == 0:
44+
node, prev = ListNode(val), next.prev
45+
node.next, node.prev = next, prev
46+
next.prev = node
47+
prev.next = node
48+
49+
50+
def deleteAtIndex(self, index: int) -> None:
51+
node = self.left.next
52+
while node and index > 0:
53+
node = node.next
54+
index -= 1
55+
56+
if node and node != self.right and index == 0:
57+
node.prev.next = node.next
58+
node.next.prev = node.prev
59+
60+
61+
# Your MyLinkedList object will be instantiated and called as such:
62+
# obj = MyLinkedList()
63+
# param_1 = obj.get(index)
64+
# obj.addAtHead(val)
65+
# obj.addAtTail(val)
66+
# obj.addAtIndex(index,val)
67+
# obj.deleteAtIndex(index)

0 commit comments

Comments
 (0)