Skip to content

Commit ea09fcb

Browse files
Merge pull request #1892 from CodingTestStudy2/최원준
[최원준] Day25
2 parents 65283d9 + 0818a53 commit ea09fcb

1 file changed

Lines changed: 46 additions & 0 deletions

File tree

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
class Solution:
2+
def countSmaller(self, nums: List[int]) -> List[int]:
3+
n = len(nums)
4+
ans = [0] * n
5+
6+
arr = [(num, i) for i, num in enumerate(nums)]
7+
8+
def merge_sort(arr):
9+
if len(arr) <= 1:
10+
return arr
11+
12+
mid = len(arr) // 2
13+
14+
left = merge_sort(arr[:mid])
15+
right = merge_sort(arr[mid:])
16+
17+
merged = []
18+
19+
i = 0
20+
j = 0
21+
smaller = 0
22+
23+
while i < len(left) and j < len(right):
24+
if left[i][0] <= right[j][0]:
25+
ans[left[i][1]] += smaller
26+
merged.append(left[i])
27+
i += 1
28+
else:
29+
smaller += 1
30+
merged.append(right[j])
31+
j += 1
32+
33+
while i < len(left):
34+
ans[left[i][1]] += smaller
35+
merged.append(left[i])
36+
i += 1
37+
38+
while j < len(right):
39+
merged.append(right[j])
40+
j += 1
41+
42+
return merged
43+
44+
merge_sort(arr)
45+
46+
return ans

0 commit comments

Comments
 (0)