翻转对

此博客链接:

翻转对

题目链接: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.超时

出来混总是要还的
原文地址:https://www.cnblogs.com/ping2yingshi/p/14051768.html