给你一个整数数组 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
此题我们也采用归并的方式来完成。
此题要求我们只能向后看,看后面的小于当前要判断的值
但是在这个题当中,我们不仅要在辅助数组当中保留原始数组的中的数据还要有索引数据,所以在这我们就可以直接在辅助数组当中直接存入索引,然后通过索引去输入数组中查询数据来进行大小的比较。
代码的演示和详细注释:
public class Demo315 {
public static void main(String[] args) {
int[] a = {
5,2,6,1};
List<Integer> b = countSmaller(a);
System.out.println(b);
}
private static List<Integer> countSmaller(int[] nums) {
int len = nums.length;
List<Integ