1. 程式人生 > 其它 >leetcode-華為專題-1365. 有多少小於當前數字的數字

leetcode-華為專題-1365. 有多少小於當前數字的數字

/*
    暴力法,
*/
/*
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; } };