
/*
暴力法,
*/
/*
class Solution {
public:
vector<int> smallerNumbersThanCurrent(vector<int>& nums) {
vector<int> res(nums.size());
for(int i = 0; i < nums.size(); i++){
int l = 0;
int r = nums.size()-1;
int cnt = 0;
while(l<i){
if(nums[l]<nums[i])
cnt++;
l++;
}
while(r>i){
if(nums[r]<nums[i])
cnt++;
r--;
}
res[i] = cnt;
}
return res;
}
};
*/
class Solution {
public:
vector<int> smallerNumbersThanCurrent(vector<int>& nums) {
vector<int> res = nums;
unordered_map<int, int> in_map;
sort(res.begin(), res.end()); // 排序以后下标就是数组中比当前元素小的个数
// for(int i = 0; i < res.size(); i++){
// in_map[res[i]] = i; // 保存排序后下标
// }
for(int i = res.size()-1; i >=0; i--){ // 从后往前这个太经典了
in_map[res[i]] = i; // 保存排序后下标
}
for(int i = 0; i < nums.size(); i++){
res[i] = in_map[nums[i]];
}
return res;
}
};