leetcode 493. Reverse Pairs
来源:互联网 发布:淘宝订单在线生成器 编辑:程序博客网 时间:2024/06/05 05:27
493. Reverse Pairs
Given an array nums
, we call (i, j)
an important reverse pair if i < j
and nums[i] > 2*nums[j]
.
You need to return the number of important reverse pairs in the given array.
Example1:
Input: [1,3,2,3,1]Output: 2
Example2:
Input: [2,4,3,5,1]Output: 3
Note:
- The length of the given array will not exceed
50,000
. - All the numbers in the input array are in the range of 32-bit integer.
1、这个题可以用线段树、divide and conquer来做。线段树我没想出来Tree[]里面存的是什么,所以用后者来做。
2、有一个数据比较恶心,所以换成long long
3、
upper_bound(迭代器1,迭代器2, value); //在递增数组中返回第一个大于value的迭代器
sort(迭代器1,迭代器2)
这一类的都是 [迭代器1,迭代器2)。是前闭后开,一定注意。
4、这个题和327. Count of Range Sum做法有点相似。都是分成两截,在两截内部有满足的情况,再加上两截之间的满足的情况,一起返回。
5、都是在递增序列中(非递减序列)找
upper_bound 大于 value的第一个迭代器
lower_bound 大于等于 value的第一个迭代器
class Solution {public: int reversePairs(vector<int>& nums) { if (nums.empty()) return 0; vector<long long> lnums; for (auto it : nums) lnums.push_back(it); return helper(lnums, 0, lnums.size() - 1); } int helper(vector<long long>& nums, int l, int r) //返回 [l,r]内的满足的 { if (l == r) return 0; int m = (l + r) / 2; int ret = helper(nums, l, m) + helper(nums, m + 1, r); //计算左右之间的 for (int i = m + 1; i <= r; i++) { auto it = upper_bound(nums.begin()+l, nums.begin()+m+1, nums[i] * 2); //在前面区间找 大于 后面区间每个值*2 的位置 ret += (nums.begin() + m + 1) - it; } sort(nums.begin() + l, nums.begin() + r + 1); return ret; }};
阅读全文
0 0
- [LeetCode]493. Reverse Pairs
- leetCode:493. Reverse Pairs
- Leetcode:493. Reverse Pairs
- leetcode 493. Reverse Pairs
- [Leetcode] 493. Reverse Pairs 解题报告
- leetcode练习 Reverse Pairs
- leetcode改进 Reverse Pairs
- 493. Reverse Pairs
- 493. Reverse Pairs
- 493. Reverse Pairs
- 493. Reverse Pairs
- 493. Reverse Pairs
- [LeetCode]493. Reverse Pairs 深入浅出算法讲解和代码示例
- leetcode 493. Reverse Pairs 归并排序统计逆序对数量
- LeetCode week 1 : Reverse Pairs(493)
- Reverse Pairs
- 【分治算法】Leetcode编程题解:493. Reverse Pairs Add to List
- 来来来 再来一个逆序对 493. Reverse Pairs
- linux根目录下的部分重要目录的作用
- Spring注解详解
- service的onBind,onRebind,onUnbind方法
- 系统激活
- vue.js带日期星期数字时钟代码
- leetcode 493. Reverse Pairs
- Oracle连接DB2
- "下载软件仓库信息失败,检查您的internet连接"的解决办法
- Android Databinding 点击事件
- MYSQL把一张表的数据批量复制到另外一张表
- [NOIP模拟题]FGD的密码
- 【android逆向笔记】(一)简单登录逆向
- 利用键盘输入 统计随机输入 一段话中某个元素出现的次数 (详细思路)
- 火狐浏览器的兼容性问题