码迷,mamicode.com
首页 > 其他好文 > 详细

315. Count of Smaller Numbers After Self

时间:2019-12-02 00:44:27      阅读:101      评论:0      收藏:0      [点我收藏+]

标签:numbers   begin   return   sub   代码   class   div   The   二分   

You are given an integer array nums and you have to return a new counts array. The counts array has the property where counts[i] is the number of smaller elements to the right of nums[i].

Example:

Input: [5,2,6,1]
Output: [2,1,1,0] 
Explanation:
To the right of 5 there are 2 smaller elements (2 and 1).
To the right of 2 there is only 1 smaller element (1).
To the right of 6 there is 1 smaller element (1).
To the right of 1 there is 0 smaller element.
Accepted
97,984
Submissions
244,852
 
基本思路 从后向前遍历,每遍历一个数把他放到一个数组里面,有序插入, 用二分是最快的.
用stl的函数用节省不少代码
 
class Solution {
public:
    vector<int> countSmaller(vector<int>& nums) {
        vector<int> after,res(nums.size());
        for(int i=nums.size()-1;i>=0;--i)
        {
            auto iter=lower_bound(after.begin(),after.end(),nums[i]);
            res[i]=iter-after.begin();
            after.insert(iter,nums[i]);
        }
        return res;
    }
};

 

315. Count of Smaller Numbers After Self

标签:numbers   begin   return   sub   代码   class   div   The   二分   

原文地址:https://www.cnblogs.com/lychnis/p/11968238.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!