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

Golang | Leetcode Golang题解之第493题翻转对

题目:

题解:

type fenwick struct {tree []int
}func newFenwickTree(n int) fenwick {return fenwick{make([]int, n+1)}
}func (f fenwick) add(i int) {for ; i < len(f.tree); i += i & -i {f.tree[i]++}
}func (f fenwick) sum(i int) (res int) {for ; i > 0; i &= i - 1 {res += f.tree[i]}return
}func reversePairs(nums []int) (cnt int) {n := len(nums)if n <= 1 {return}// 离散化所有下面统计时会出现的元素allNums := make([]int, 0, 2*n)for _, v := range nums {allNums = append(allNums, v, 2*v)}sort.Ints(allNums)k := 1kth := map[int]int{allNums[0]: k}for i := 1; i < 2*n; i++ {if allNums[i] != allNums[i-1] {k++kth[allNums[i]] = k}}t := newFenwickTree(k)for i, v := range nums {// 统计之前插入了多少个比 2*v 大的数cnt += i - t.sum(kth[2*v])t.add(kth[v])}return
}
http://www.lryc.cn/news/466236.html

相关文章:

  • linux笔记(yum本地源仓库搭建)
  • K8S系列-Kubernetes网络
  • Excel 对数据进行脱敏
  • OJ-1014田忌赛马
  • Excel重新踩坑3:条件格式;基本公式运算符;公式中的单元格引用方式;公式菜单栏其他有用的功能说明;
  • 【AI知识点】FAISS如何提高检索效率?
  • 【Git】Gitlab进行merge request的时候,出现待合并分支合并了主分支的问题的解决
  • jetson nano ubuntu20.04安装ros-Noetic
  • 【数据结构与算法】走进数据结构的“时间胶囊”——栈
  • 伺服增量式和绝对式的本质区别?
  • 应对 .DevicData-X-XXXXXXXX 勒索病毒:防御与恢复策略
  • 【代码随想录——数组——二刷】
  • spring-boot(4)
  • 深度学习模型:原理、架构与应用
  • 玩客云Armbian安装Casaos
  • redis过期提醒
  • AnaTraf | 提升网络性能:深入解析网络关键指标监控、TCP重传与TCP握手时间
  • 黑盒测试和白盒测试的具体方法(附加实际应用中的技巧和注意事项)
  • 基于ssm的小区物业管理系统
  • 4本SCI/SSCI期刊更名,10月WOS更新!速看!
  • 麒麟v10系统安装docker镜像
  • 基于SSM大学校医院信息管理系统的设计
  • 【JS】如何识别一个变量是不是数组对象
  • 探索 Python 幽默之源:pyjokes 库全解析
  • 苦寻多时,终于找到!这款免费GIS工具助你轻松搞定地形切片
  • OpenResty性能分析:以HelloWorld服务器为例
  • pb生成文件和反射
  • .net framework 3.5sp1安装错误卡住不动怎么解决
  • 毕业设计—基于 Inception-ResNet模型的皮肤癌分类系统实现
  • 什么是优秀的单元测试?