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

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

题目:

题解:

class Solution {public int reversePairs(int[] nums) {Set<Long> allNumbers = new TreeSet<Long>();for (int x : nums) {allNumbers.add((long) x);allNumbers.add((long) x * 2);}// 利用哈希表进行离散化Map<Long, Integer> values = new HashMap<Long, Integer>();int idx = 0;for (long x : allNumbers) {values.put(x, idx);idx++;}int ret = 0;BIT bit = new BIT(values.size());for (int i = 0; i < nums.length; i++) {int left = values.get((long) nums[i] * 2), right = values.size() - 1;ret += bit.query(right + 1) - bit.query(left + 1);bit.update(values.get((long) nums[i]) + 1, 1);}return ret;}
}class BIT {int[] tree;int n;public BIT(int n) {this.n = n;this.tree = new int[n + 1];}public static int lowbit(int x) {return x & (-x);}public void update(int x, int d) {while (x <= n) {tree[x] += d;x += lowbit(x);}}public int query(int x) {int ans = 0;while (x != 0) {ans += tree[x];x -= lowbit(x);}return ans;}
}
http://www.lryc.cn/news/466031.html

相关文章:

  • uniapp scroll-view翻转90度后,无法滚动问题,并设置滚动条到最底部(手写横屏样式)
  • 腾讯PAG 动画库Android版本的一个问题与排查记录
  • 计算机的算术运算之浮点数
  • Sqlite3 操作笔记
  • mysqlRouter读写分离
  • 【修订中】ffmpeg 知识点
  • Rust初踩坑
  • element-ui 的el-calendar日历组件样式修改
  • LinuxDebian系统安装nginx
  • Redis 数据类型Streams
  • 基智科技CEO张文战:探索火山引擎数据飞轮模式下的大模型应用新机会
  • 【AUTOSAR标准文档】AotuSar结构横向分层详解(RTE、BSW)
  • 新 Chrome 插件可检测 AI 伪造声音;Canary Speech 推出用于临床对话的语音分析技术丨 RTE 开发者日报
  • 1. 路由定义
  • 我们可以用微服务创建状态机吗?
  • 邦芒贴士:职场新人需远离的7种坏习惯
  • 面向医院的统一支付平台产品经验分享
  • http作业
  • AlDente Pro for Mac电脑 充电限制保护工具 安装教程【简单,轻松上手】
  • C语言数据结构之算法复杂度
  • HDU RSA
  • 数据仓库建设 : 主题域简介
  • 开源表单生成器OpnForm
  • Zookeeper面试整理-Zookeeper的基础概念
  • 验证archive_command配置是否正确
  • 2024.10.19小米笔试题解
  • SQL-SERVER导入excel表格
  • Vue学习笔记(三、v-cloak、v-text、v-html指令)
  • Java | Leetcode Java题解之第496题下一个更大元素I
  • 【ArcGIS微课1000例】0125:ArcGIS矢量化无法自动完成面解决方案