leetcode-華為專題-1365. 有多少小於當前數字的數字
阿新 • • 發佈:2021-10-10
/* 暴力法, */ /* 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; } };