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

LeetCode 翻转对

题目地址:https://leetcode.cn/problems/reverse-pairs/description/

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

// 给定一个数组 nums ,如果 i < j 且 nums[i] > 2*nums[j] 我们就将 (i, j) 称作一个重要翻转对。
// 返回给定数组中的重要翻转对的数量// 实现思路:参考归并排序,先解决左边部分,再解决右边部分。最后考虑左跨右部分var help = make([]int, 50000) func reversePairs(nums []int) int {return divide(nums, 0, len(nums)-1)
}func divide(nums []int, l, r int) int {if l == r {return 0}m := (l + r) / 2return divide(nums, l, m) + divide(nums, m+1, r) + merge(nums, l, m, r)
}func merge(nums []int, l, m, r int) int {i := lj := m + 1count := 0sum := 0for i <= m {for j <= r && nums[i] > 2*nums[j] {count++j++}i++sum += count}// 归并排序a := lb := m + 1i = lfor a <= m && b <= r {if nums[a] <= nums[b] {help[i] = nums[a]i++a++} else {help[i] = nums[b]i++b++}}for a <= m {help[i] = nums[a]a++i++}for b <= r {help[i] = nums[b]b++i++}for i := l; i < r+1; i++ {nums[i] = help[i]}return sum
}
http://www.dtcms.com/a/473848.html

相关文章:

  • Egg.js 完全指南:企业级 Node.js 应用框架
  • 矩阵的求逆
  • 网页设计做网站wordpress主题添加双备案号
  • 已有备案网站增加域名咸阳网站建设价格
  • go-swagger学习笔记
  • Blender硬面建模灯光渲染材质修改器纹理烘焙插件 Rantools And P-Cutter All-In-One Addon V3.3.10
  • Autosar OS简介
  • 建设企业网站制作公司贵阳做网站公司排名
  • 设计模式篇之 桥接模式 Bridge
  • Spring IOC(控制反转)中常用注解
  • 常州建设银行网站安源网站建设
  • 【Linux学习笔记】线程的同步与互斥(一)
  • 【开题答辩全过程】以 基于Android的小区物业管理APP的设计与实现为例,包含答辩的问题和答案
  • 【数据结构】二叉树-图解广度优先搜索
  • 临汾市建设局网站wordpress hacker主题
  • 【机器学习入门】7.1 决策树 —— 像 “判断流程图” 一样做分类
  • 虚拟机可以做两个网站物流网站有哪些
  • C++ 模拟题 力扣495. 提莫攻击 题解 每日一题
  • Google Chrome 开发者工具
  • 微信公众号平台开发文档深圳网站建设模板乐云seo
  • GitHub 热榜项目 - 日榜(2025-10-12)
  • 结构化特征生成推进广度学习:2025年深度学习领域的重要突破
  • 达梦数据库全库透明加密(TDE)解决方案:实现静态数据高安全防护
  • 深圳模板网站多少钱政务中心网站建设方案
  • spring boot拦截器获取requestBody的巨坑
  • [2]python爬虫实践,爬取网易云音乐热歌榜排行版名称
  • 网站快速备案公司wordpress文章末尾加上相关文章
  • WebAssembly联调实践:Rust计算模块与Node.js后端的性能对比
  • 利用万网做网站建筑工程网下载
  • 麒麟系统开机启动