2019-12-17 09:42:44

问题描述:

问题求解

逆序数问题非常经典,使用树状数组可以高效的解决这个问题。

    public List<Integer> countSmaller(int[] nums) {
List<Integer> res = new ArrayList<>();
int n = nums.length;
int[] nums_copy = Arrays.copyOf(nums, n);
Map<Integer, Integer> map = new HashMap<>();
Arrays.sort(nums_copy);
int rank = 0;
for (int i = 0; i < n; i++) {
if (i == 0 || nums_copy[i] != nums_copy[i - 1]) {
map.put(nums_copy[i], ++rank);
}
}
int[] bit = new int[map.size() + 1];
for (int i = n - 1; i >= 0; i--) {
update(bit, map.get(nums[i]));
res.add(query(bit, map.get(nums[i]) - 1));
}
Collections.reverse(res);
return res;
} private void update(int[] bit, int idx) {
for (int i = idx; i < bit.length; i += i & -i) {
bit[i] += 1;
}
} private int query(int[] bit, int idx) {
int res = 0;
for (int i = idx; i > 0; i -= i & -i) {
res += bit[i];
}
return res;
}

  

最新文章

  1. [django]Django的css、image和js静态文件生产环境配置
  2. 用Python实现一个爬取XX大学电费通知的小脚本
  3. vpython初探
  4. 【转】数据预处理之独热编码(One-Hot Encoding)
  5. 实验一《开发环境的熟悉》&amp;实验二《固件设计》
  6. JavaScript案例五:下拉列表左右选择
  7. MySQL教程:数据库具体操作
  8. Android 自定义控件 EditText输入框两边加减按钮Button
  9. 整型(int)转时间格式字符串及页面long型转时间格式字符串
  10. Python Challenge 过关心得(0)
  11. 轻松学会多线程(四)——synchronized同步keyword知多少
  12. 一旦ORA-28000: the account is locked用户锁定故障排除
  13. (转)关于docker的15个小tip
  14. python3+django2 开发易语言网络验证(下)
  15. 【Python】2.x与3​​.x版本的选用&amp;版本间的区别
  16. Google&#39;s Machine Learning Crash Course #04# First Steps with TensorFlow
  17. linux下对数据库操作
  18. cmder的使用和编码问题解决
  19. 【基于初学者的SSH】struts2 环境配置
  20. vue react angular对比

热门文章

  1. Leetcode 981. Time Based Key-Value Store(二分查找)
  2. 微软发布Microsoft Concept Graph和Microsoft Concept Tagging模型
  3. numpy.random模块用法总结
  4. USB小白学习之路(4)HID键盘程序
  5. 编写一个可复用的SpringBoot应用运维脚本
  6. Implementing 5G NR Features in FPGA
  7. [面试专题]前端需要知道的web安全知识
  8. 【渗透】node.js经典问题
  9. Java基础--面向对象(上)
  10. PC端如何下载B站里面的视频?