Skip to content

Commit 8aed05e

Browse files
committed
Implement skip list
1 parent f7e8c77 commit 8aed05e

1 file changed

Lines changed: 37 additions & 0 deletions

File tree

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
class SkipList:
2+
def __init__(self):
3+
self.items = []
4+
5+
def insert(self, value):
6+
left = 0
7+
right = len(self.items)
8+
9+
while left < right:
10+
mid = (left + right) // 2
11+
12+
if self.items[mid] < value:
13+
left = mid + 1
14+
else:
15+
right = mid
16+
17+
self.items.insert(left, value)
18+
19+
def __contains__(self, value):
20+
left = 0
21+
right = len(self.items) - 1
22+
23+
while left <= right:
24+
mid = (left + right) // 2
25+
26+
if self.items[mid] == value:
27+
return True
28+
29+
if self.items[mid] < value:
30+
left = mid + 1
31+
else:
32+
right = mid - 1
33+
34+
return False
35+
36+
def to_list(self):
37+
return list(self.items)

0 commit comments

Comments
 (0)