遇到这种类型的题目,一般我们第一个想到的就是暴力破解法。于是在我迅速敲出几行代码后,不出所料地提交失败,原因是超出限制时间。的确,用暴力破解法两个循环导致算法的复杂度达到O(n^2),很容易就超出了限制时间。
那我们就需要用一种方法,来记录每个元素,使得不用重复比较从而降低复杂度。
这个方法就是从后面的元素开始,将比较的数一个个加入一个vector,并按从小到大的顺序加入相应的位置,它的位置就是右边比它小的数字个数。排序方式用二分搜索实现。
代码如下:
遇到这种类型的题目,一般我们第一个想到的就是暴力破解法。于是在我迅速敲出几行代码后,不出所料地提交失败,原因是超出限制时间。的确,用暴力破解法两个循环导致算法的复杂度达到O(n^2),很容易就超出了限制时间。
那我们就需要用一种方法,来记录每个元素,使得不用重复比较从而降低复杂度。
这个方法就是从后面的元素开始,将比较的数一个个加入一个vector,并按从小到大的顺序加入相应的位置,它的位置就是右边比它小的数字个数。排序方式用二分搜索实现。
代码如下: