博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode315 Count of Smaller Numbers After Self
阅读量:5162 次
发布时间:2019-06-13

本文共 1406 字,大约阅读时间需要 4 分钟。

思路:

bit + 离散化。

实现:

1 #include 
2 using namespace std; 3 class Solution 4 { 5 public: 6 int sum(vector
& bit, int i) 7 { 8 int ans = 0; 9 while (i) { ans += bit[i]; i -= i & -i; }10 return ans;11 }12 void add(vector
& bit, int i, int x)13 {14 int n = bit.size() - 1;15 while (i <= n) { bit[i] += x; i += i & -i; }16 }17 vector
countSmaller(vector
& nums) 18 {19 int n = nums.size();20 vector
a(nums.begin(), nums.end()), b(nums.begin(), nums.end());21 sort(a.begin(), a.end());22 a.erase(unique(a.begin(), a.end()), a.end());23 for (int i = 0; i < n; i++)24 b[i] = lower_bound(a.begin(), a.end(), b[i]) - a.begin() + 1;25 vector
bit(n + 1, 0), ans(n, 0);26 for (int i = n - 1; i >= 0; i--)27 {28 add(bit, b[i], 1);29 ans[i] = b[i] == 1 ? 0 : sum(bit, b[i] - 1);30 }31 return ans;32 }33 };34 int main()35 {36 vector
v;37 v.push_back(5);38 v.push_back(-1);39 v.push_back(6);40 v.push_back(1);41 vector
ans = Solution().countSmaller(v);42 for (auto it: ans) cout << it << " ";43 cout << endl;44 return 0;45 }

 

转载于:https://www.cnblogs.com/wangyiming/p/9167586.html

你可能感兴趣的文章
如何将应用完美迁移至Android P版本
查看>>
【转】清空mysql一个库中的所有表的数据
查看>>
基于wxPython的python代码统计工具
查看>>
淘宝JAVA中间件Diamond详解(一)---简介&快速使用
查看>>
Hadoop HBase概念学习系列之HBase里的宽表设计概念(表设计)(二十七)
查看>>
Kettle学习系列之Kettle能做什么?(三)
查看>>
Day03:Selenium,BeautifulSoup4
查看>>
awk变量
查看>>
mysql_对于DQL 的简单举例
查看>>
35. Search Insert Position(C++)
查看>>
[毕业生的商业软件开发之路]C#异常处理
查看>>
一些php文件函数
查看>>
有关快速幂取模
查看>>
Linux运维必备工具
查看>>
字符串的查找删除
查看>>
NOI2018垫底记
查看>>
快速切题 poj 1002 487-3279 按规则处理 模拟 难度:0
查看>>
Codeforces Round #277 (Div. 2)
查看>>
【更新】智能手机批量添加联系人
查看>>
NYOJ-128前缀式计算
查看>>