File tree Expand file tree Collapse file tree 1 file changed +99
-0
lines changed
problems/0707-design-linked-list Expand file tree Collapse file tree 1 file changed +99
-0
lines changed Original file line number Diff line number Diff line change 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 ))
You can’t perform that action at this time.
0 commit comments