当前位置: 首页 > news >正文

【算法题】翻转对

题目:

给定一个数组 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位整数的表示范围内。

java代码:

class Solution {public int reversePairs(int[] nums) {if (nums.length == 0) {return 0;}return reversePairsRecursive(nums, 0, nums.length - 1);}public int reversePairsRecursive(int[] nums, int left, int right) {if (left == right) {return 0;} else {int mid = (left + right) / 2;int n1 = reversePairsRecursive(nums, left, mid);int n2 = reversePairsRecursive(nums, mid + 1, right);int ret = n1 + n2;// 首先统计下标对的数量int i = left;int j = mid + 1;while (i <= mid) {while (j <= right && (long) nums[i] > 2 * (long) nums[j]) {j++;}ret += j - mid - 1;i++;}// 随后合并两个排序数组int[] sorted = new int[right - left + 1];int p1 = left, p2 = mid + 1;int p = 0;while (p1 <= mid || p2 <= right) {if (p1 > mid) {sorted[p++] = nums[p2++];} else if (p2 > right) {sorted[p++] = nums[p1++];} else {if (nums[p1] < nums[p2]) {sorted[p++] = nums[p1++];} else {sorted[p++] = nums[p2++];}}}for (int k = 0; k < sorted.length; k++) {nums[left + k] = sorted[k];}return ret;}}
}
http://www.lryc.cn/news/207348.html

相关文章:

  • 适用于 Mac 或 Windows 的 4 种最佳 JPEG/PNG图片 恢复软件
  • 位置信息API
  • MySQL——九、SQL编程
  • threejs(4)-纹理材质高级操作
  • Redis | 数据结构(01)
  • 一文详解多模态大模型发展及高频因子计算加速GPU算力 | 英伟达显卡被限,华为如何力挽狂澜?
  • debian 10 安装apache2 zabbix
  • Qt之菜单栏、工具栏、状态栏介绍及工具栏QAction的动态增删显示实现方式
  • 十四天学会C++之第八天:文件操作
  • 基于(N-1)×(N-1)棋盘的解的情况推出N×N棋盘的解的情况的N皇后问题
  • Vue mixin混入
  • 基于 FFmpeg 的跨平台视频播放器简明教程(十):在 Android 运行 FFmpeg
  • 正点原子嵌入式linux驱动开发——Linux LCD驱动
  • 2-Java进阶知识总结-6-多线程
  • openwrt下游设备在校园网(DLUT-LingShui)中使用ipv6网络
  • 10个基于.Net开发的Windows开源软件项目
  • Java多线程秘籍,掌握这5种方法,让你的代码优化升级
  • npm install报错 缺少python
  • 达梦:开启sql日志记录
  • C语言开发,指针进阶,字符串查找,包含,拼接
  • PyCharm中文使用详解
  • 一键同步,无处不在的书签体验:探索多电脑Chrome书签同步插件
  • 在Go项目中二次封装Kafka客户端功能
  • CVE-2021-44228 Apache log4j 远程命令执行漏洞
  • 前端跨域相关
  • HTML笔记-狂神
  • python自动化测试工具selenium
  • 输入/输出应用程序接口和设备驱动程序接口
  • Python---Socket 网络通信
  • 使用 jdbc 技术升级水果库存系统(优化版本)