# 计算右侧小于当前元素的个数

<p>给你`一个整数数组 <code>nums</code><em> </em>，按要求返回一个新数组&nbsp;<code>counts</code><em> </em>。数组 <code>counts</code> 有该性质： <code>counts[i]</code> 的值是&nbsp; <code>nums[i]</code> 右侧小于&nbsp;<code>nums[i]</code> 的元素的数量。</p>

<p>&nbsp;</p>

<p><strong>示例 1：</strong></p>

<pre>
<strong>输入：</strong>nums = [5,2,6,1]
<strong>输出：</strong><code>[2,1,1,0] 
<strong>解释：</strong></code>
5 的右侧有 <strong>2 </strong>个更小的元素 (2 和 1)
2 的右侧仅有 <strong>1 </strong>个更小的元素 (1)
6 的右侧有 <strong>1 </strong>个更小的元素 (1)
1 的右侧有 <strong>0 </strong>个更小的元素
</pre>

<p><strong>示例 2：</strong></p>

<pre>
<strong>输入：</strong>nums = [-1]
<strong>输出：</strong>[0]
</pre>

<p><strong>示例 3：</strong></p>

<pre>
<strong>输入：</strong>nums = [-1,-1]
<strong>输出：</strong>[0,0]
</pre>

<p>&nbsp;</p>

<p><strong>提示：</strong></p>

<ul>
	<li><code>1 &lt;= nums.length &lt;= 10<sup>5</sup></code></li>
	<li><code>-10<sup>4</sup> &lt;= nums[i] &lt;= 10<sup>4</sup></code></li>
</ul>


## template

```java
class Solution {
	public static List<Integer> countSmaller(int[] nums) {
		if (nums.length == 0) {
			return new ArrayList<>();
		}
		int min = Integer.MAX_VALUE;
		for (int value : nums) {
			if (value < min) {
				min = value;
			}
		}
		for (int i = 0; i < nums.length; i++) {
			nums[i] = nums[i] - min + 1;
		}

		int max = Integer.MIN_VALUE;
		for (int value : nums) {
			if (value > max) {
				max = value;
			}
		}

		int[] BITree = new int[max + 1];
		BITree[0] = 0;
		int[] countArr = new int[nums.length];
		for (int i = nums.length - 1; i >= 0; i--) {
			int count = getSum(nums[i] - 1, BITree);
			countArr[i] = count;
			update(nums[i], BITree);
		}
		List<Integer> result = new ArrayList<>();
		for (int value : countArr) {
			result.add(value);
		}
		return result;
	}

	public static int getSum(int value, int[] BITree) {
		int sum = 0;
		while (value > 0) {
			sum += BITree[value];
			value -= (value & -value);
		}
		return sum;
	}

	public static void update(int value, int[] BITree) {
		while (value <= BITree.length - 1) {
			BITree[value] += 1;
			value += (value & -value);
		}
	}

}


```

## 答案

```java

```

## 选项

### A

```java

```

### B

```java

```

### C

```java

```