Skip to content

Commit 14595a1

Browse files
committed
315
1 parent 0643008 commit 14595a1

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
class BIT(object):
2+
def __init__(self, n):
3+
self.nums = [0] * (n + 1)
4+
5+
def update(self, i, v):
6+
while i < len(self.nums):
7+
self.nums[i] += v
8+
i += (i & -i)
9+
10+
def sum(self, i):
11+
s = 0
12+
while i > 0:
13+
s += self.nums[i]
14+
i -= (i & -i)
15+
return s
16+
17+
18+
class Solution(object):
19+
def countSmaller(self, nums):
20+
"""
21+
:type nums: List[int]
22+
:rtype: List[int]
23+
"""
24+
d = {v: i for i, v in enumerate(sorted(set(nums)))}
25+
t = BIT(len(nums))
26+
res = []
27+
for i in xrange(len(nums) - 1, -1, -1):
28+
res.append(t.sum(d[nums[i]]))
29+
t.update(d[nums[i]] + 1, 1)
30+
return res[::-1]

0 commit comments

Comments
 (0)