Skip to content

Commit 6cf0052

Browse files
committed
chore: add alternate solution to 0707
1 parent 8456e83 commit 6cf0052

File tree

1 file changed

+99
-0
lines changed

1 file changed

+99
-0
lines changed
Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
from typing import *
2+
3+
class Node:
4+
def __init__(self, val):
5+
self.val = val
6+
self.next = None
7+
8+
class MyLinkedList:
9+
10+
def __init__(self):
11+
self.head = Node(None)
12+
self.tail = self.head
13+
self.size = 0
14+
15+
def get(self, index: int) -> int:
16+
if not self.checkElementIndex(index):
17+
return -1
18+
19+
p = self.head.next
20+
for _ in range(index):
21+
p = p.next
22+
23+
return p.val
24+
25+
26+
def addAtHead(self, val: int) -> None:
27+
x = Node(val)
28+
29+
x.next = self.head.next
30+
self.head.next = x
31+
32+
if self.size == 0:
33+
self.tail = x
34+
35+
self.size += 1
36+
37+
38+
def addAtTail(self, val: int) -> None:
39+
x = Node(val)
40+
self.tail.next = x
41+
self.tail = x
42+
43+
self.size += 1
44+
45+
46+
def addAtIndex(self, index: int, val: int) -> None:
47+
if not self.checkPositionIndex(index):
48+
return
49+
50+
if index == self.size:
51+
self.addAtTail(val)
52+
return
53+
54+
prev = self.head
55+
56+
for _ in range(index):
57+
prev = prev.next
58+
59+
x = Node(val)
60+
61+
x.next = prev.next
62+
prev.next = x
63+
64+
self.size += 1
65+
66+
def deleteAtIndex(self, index: int) -> None:
67+
if not self.checkElementIndex(index):
68+
return
69+
70+
prev = self.head
71+
72+
for _ in range(index):
73+
prev = prev.next
74+
75+
node_to_remove = prev.next
76+
prev.next = node_to_remove.next
77+
78+
if index == self.size - 1:
79+
self.tail = prev
80+
81+
self.size -= 1
82+
83+
return node_to_remove.val
84+
85+
# utils
86+
def checkElementIndex(self, index):
87+
return 0 <= index < self.size
88+
89+
def checkPositionIndex(self, index):
90+
return 0 <= index <= self.size
91+
92+
if __name__ == "__main__":
93+
obj = MyLinkedList()
94+
obj.addAtHead(1)
95+
obj.addAtTail(3)
96+
obj.addAtIndex(1, 2)
97+
print(obj.get(1))
98+
obj.deleteAtIndex(1)
99+
print(obj.get(1))

0 commit comments

Comments
 (0)