# 计算右侧小于当前元素的个数
给你`一个整数数组 nums
,按要求返回一个新数组 counts
。数组 counts
有该性质: counts[i]
的值是 nums[i]
右侧小于 nums[i]
的元素的数量。
示例 1:
输入:nums = [5,2,6,1]
输出:[2,1,1,0]
解释:
5 的右侧有 2 个更小的元素 (2 和 1)
2 的右侧仅有 1 个更小的元素 (1)
6 的右侧有 1 个更小的元素 (1)
1 的右侧有 0 个更小的元素
示例 2:
输入:nums = [-1]
输出:[0]
示例 3:
输入:nums = [-1,-1]
输出:[0,0]
提示:
1 <= nums.length <= 105
-104 <= nums[i] <= 104
## template
```python
class Solution:
def countSmaller(self, nums: List[int]) -> List[int]:
n = len(nums)
if n == 0:
return []
numsarr = [[nums[i], i] for i in range(n)]
res = [0 for _ in range(n)]
def merge(left, right):
if left == right:
pass
else:
mid = left + (right - left) // 2
merge(left, mid)
merge(mid + 1, right)
temp = []
i = left
j = mid + 1
while i <= mid and j <= right:
if numsarr[i][0] <= numsarr[j][0]:
temp.append(numsarr[j])
j += 1
else:
temp.append(numsarr[i])
res[numsarr[i][1]] += right - j + 1
i += 1
while i <= mid:
temp.append(numsarr[i])
i += 1
while j <= right:
temp.append(numsarr[j])
j += 1
numsarr[left : right + 1] = temp[:]
merge(0, n - 1)
return res
```
## 答案
```python
```
## 选项
### A
```python
```
### B
```python
```
### C
```python
```