此博客链接:
翻转对
题目链接:https://leetcode-cn.com/problems/reverse-pairs/
给定一个数组 nums ,如果 i < j 且 nums[i] > 2*nums[j] 我们就将 (i, j) 称作一个重要翻转对。
你需要返回给定数组中的重要翻转对的数量。
示例 1:
输入: [1,3,2,3,1]
输出: 2
示例 2:
输入: [2,4,3,5,1]
输出: 3
注意:
给定数组的长度不会超过50000。
输入数组中的所有数字都在32位整数的表示范围内。
题解
思路:遍历数组,看数组前面的数字有多少大于后面数字的2倍。
方法:
1.遍历数组。
2.判断数组前面的数字是否比后面数字的2倍大,如果是,则结果加一。
代码
出错
1.两个数比较大小时,题目中有乘以2的操作,在整形范围内,乘以2会超出整形范围。
2.在把前一个数字除以2时,结果会取整,导致最后的结果可能会少计算。例如前一个数是3,后一个数是1,如果3除以2,那就得1,结果1不比1大,这是不正确的。(除以2时,改成除以2.0,除的结果就是float类型)
3.超时