
与逆序对很像
使用分治的思想
[5,6,8,9,5,9]
[5,6,8] [9,5,9]
递归地将数组一分为二
此时结果ret数量=左数组翻转对+右数组翻转对+一左一右数组合翻转对
一边归并排序一边计算逆序对个数
排降序
双指针 左数组cur1 右数组cur2
以左指针为主往后遍历 与右指针比较
当nums[cur1]>2*nums[cur2]时 则nums[cur1]>所有nums[cur2]以后的数的两倍
则ret+=right-cur2+1
cur2++
当nums[cur1]<=2*nums[cur2]时
cur1++
同时要维护一个临时数组进行归并排序
1163

被折叠的 条评论
为什么被折叠?



