You are given an integer array nums and you have to return a new counts array. The counts array has the property where counts[i] is the number of smaller elements to the right of nums[i].
Example:
1 | Input: [5,2,6,1] |
这道题第一反应肯定是暴力求解,时间复杂度为O(n^2)。确实应该也能过。
思考优化的算法,首先确定,这个题肯定与排序有关。实现加速的排序,可以选择插入二分法,也就是二叉搜索树。
不同的是我们需要在每一个节点定义该节点左子树上的所有节点的个数,这样才能实现不需要遍历子树就能确定有多少个小于该节点的数。
1 | class Solution { |