315 Count of Smaller Numbers After Self 计算右侧小于当前元素的个数
给定一个整型数组 nums,按要求返回一个新的 counts 数组。数组 counts 有该性质: counts[i] 的值是 nums[i] 右侧小于nums[i] 的元素的数量。
例子:
给定 nums = [5, 2, 6, 1]
5的右侧有2个更小的元素 (2 和 1).
2的右侧仅有1个更小的元素 (1).
6的右侧有1个更小的元素 (1).
1的右侧有0个更小的元素.
返回数组 [2, 1, 1, 0].
详见:https://leetcode.com/problems/count-of-smaller-numbers-after-self/description/
class Solution { public: vector<int> countSmaller(vector<int>& nums) { vector<int> t,res(nums.size()); for(int i=nums.size()-1;i>=0;--i) { int left=0,right=t.size(); while(left<right) { int mid=left+(right-left)/2; if(t[mid]>=nums[i]) { right=mid; } else { left=mid+1; } } res[i]=right; t.insert(t.begin()+right,nums[i]); } return res; } };
参考:https://www.cnblogs.com/grandyang/p/5078490.html