Skip to content

Commit 9947ae9

Browse files
committed
Allow initializing SortedList with iterable
1 parent d4b1663 commit 9947ae9

File tree

1 file changed

+9
-8
lines changed

1 file changed

+9
-8
lines changed

pyrival/data_structures/SortedList.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -60,16 +60,17 @@ def find_kth(self, k):
6060
return idx + 1, k
6161

6262

63-
block_size = 700
64-
65-
6663
class SortedList:
67-
def __init__(self):
64+
block_size = 700
65+
66+
def __init__(self, iterable=()):
6867
self.macro = []
6968
self.micros = [[]]
7069
self.micro_size = [0]
7170
self.fenwick = FenwickTree([0])
7271
self.size = 0
72+
for item in iterable:
73+
self.insert(item)
7374

7475
def insert(self, x):
7576
i = lower_bound(self.macro, x)
@@ -78,13 +79,13 @@ def insert(self, x):
7879
self.size += 1
7980
self.micro_size[i] += 1
8081
self.fenwick.update(i, 1)
81-
if len(self.micros[i]) >= block_size:
82-
self.micros[i : i + 1] = self.micros[i][: block_size >> 1], self.micros[i][block_size >> 1 :]
83-
self.micro_size[i : i + 1] = block_size >> 1, block_size >> 1
82+
if len(self.micros[i]) >= self.block_size:
83+
self.micros[i:i + 1] = self.micros[i][:self.block_size >> 1], self.micros[i][self.block_size >> 1:]
84+
self.micro_size[i:i + 1] = self.block_size >> 1, self.block_size >> 1
8485
self.fenwick = FenwickTree(self.micro_size)
8586
self.macro.insert(i, self.micros[i + 1][0])
8687

87-
def pop(self, k=0):
88+
def pop(self, k=-1):
8889
i, j = self._find_kth(k)
8990
self.size -= 1
9091
self.micro_size[i] -= 1

0 commit comments

Comments
 (0)