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

千问 LeetCode 2426.满足不等式的数对数目 Go实现

这道题在 Go 中的实现思路与 Java 完全一致,核心都是将不等式变形后转化为“顺序对”计数问题,然后用树状数组或归并排序求解。

下面给出两种解法的 Go 实现。

解法一:树状数组(Fenwick Tree)

func numberOfPairs(nums1 []int, nums2 []int, diff int) int64 {
n := len(nums1)
nums := make([]int, n)
for i := 0; i 0 {
sum += bit[i]
i -= i & -i
}
return sum
}

解法二:归并排序(Merge Sort)

func numberOfPairs(nums1 []int, nums2 []int, diff int) int64 {
n := len(nums1)
nums := make([]int, n)
for i := 0; i = right {
return
}
mid := left + (right-left)/2
mergeSort(left, mid)
mergeSort(mid+1, right)

// 统计跨过中点的数对
j := mid + 1
for i := left; i <= mid; i++ {
for j <= right && nums[j]+diff < nums[i] {
j++
}
ans += int64(right - j + 1)
}

// 合并两个有序数组
i, k := left, left
j = mid + 1
for i <= mid && j <= right {
if nums[i] <= nums[j] {
temp[k] = nums[i]
i++
} else {
temp[k] = nums[j]
j++
}
k++
}
for i <= mid {
temp[k] = nums[i]
i++
k++
}
for j <= right {
temp[k] = nums[j]
j++
k++
}
copy(nums[left:right+1], temp[left:right+1])
}

mergeSort(0, n-1)
return ans
}

两种解法对比
特性 树状数组 归并排序
思路 从左到右遍历,查询已遍历元素中满足条件的个数 分治思想,在合并过程中统计跨中点的数对
需要离散化 是 否
代码量 稍短 稍长
常数 较大(涉及哈希表和二分) 较小
面试推荐 思路直观,容易解释 代码优雅,无需离散化

两种解法的时间复杂度都是 O(n log n),空间复杂度 O(n)。

http://www.jsqmd.com/news/833446/

相关文章:

  • 出口型工厂从外部就能认出来吗?8 个不进门就能验证的特征清单
  • 阴阳师自动化脚本OAS终极指南:轻松解放双手的完整教程
  • 从零构建本地化AI代码助手:架构、微调与工程实践
  • 5分钟掌握B站视频转文字:免费开源的终极解决方案
  • Jetson Orin上编译Apollo遇到‘drm.h找不到’?手把手教你修复Bazel编译依赖
  • 开源技能库构建指南:Git+Markdown+Docsify打造个人技术知识体系
  • 基于Docker部署OpenOffice无头服务实现文档自动化处理
  • 什么是适配器模式?一文详解
  • Supabase AI Agent技能库:安全集成数据库操作与边缘函数调用
  • 赊账前先看 6 个信号:怎么提前判断一家工厂会不会跑路、烂尾、收不回货款
  • 从零构建数据同步中间件:插件化架构与工程实践全解析
  • UVa 366 Cutting Up
  • 3个维度重塑:如何用UABEA解锁Unity资源编辑新可能?
  • 前端工程化实战:基于 Kelivo 模板的配置即代码与自动化工作流
  • 猫抓cat-catch:浏览器媒体资源嗅探与流媒体解析技术深度解析
  • SyntaxUI:基于原子设计与Web组件的现代UI库开发实践
  • 利用OCI免费套餐构建高可用Kubernetes集群实战指南
  • 工厂的招工动态能看出哪些经营信息?一份给上游销售员的信号解读手册
  • 百度网盘直链解析终极指南:3步实现高速下载的技术原理与实战
  • 合宙Air153C看门狗芯片:嵌入式系统可靠性的硬件守护方案
  • Gitclaw:封装复杂Git操作,提升开发效率的命令行工具
  • 野火挑战者V2开发板网络通信避坑记:从Ping不通到TCP热插拔,我的STM32F429+LAN8720A调试实录
  • Godot引擎集成Discord RPC:实现游戏状态实时展示与社区互动
  • 基于Plan 9与Lua的9router:构建统一命名空间的网络服务框架
  • DLSS Swapper:游戏性能优化的智能管家,释放显卡潜能的终极利器
  • Copaw_dev:AI编程助手增强框架,提升代码生成与自动化开发效率
  • 开源机械爪OpenClaw:从设计到力控抓取的完整实现指南
  • LVGL在无显存TFT屏上的驱动适配:双缓冲与DMA优化实践
  • 解析开源协作平台tonl:从脚手架到CI/CD的现代Web开发工具链设计
  • 2026康养文旅设计哪家靠谱?行业服务与实践解析 - 品牌排行榜