zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    组合模式
    备忘录模式
    适配器模式
    状态模式
    观察者模式
    建造者模式
    地图染色-四色定理
    c++传递函数当作对象传递
    位向量实现集合—王晓东数据结构
    动态规划之最大连续子序列
  • 原文地址:https://www.cnblogs.com/xidian2014/p/8831344.html
Copyright © 2011-2022 走看看