您的位置:首页 > 其它

315. Count of Smaller Numbers After Self

2016-11-26 15:18 344 查看
class Solution {
private:
struct Node{
int val;
int lesscount;
int dup;
Node *left;
Node *right;
};
Node *insert(int num,Node *root,vector<int> &ret,int i,int preless)
{
if(root==NULL)
{
root=new Node();
root->val=num;
root->lesscount=0;
root->dup=1;
ret[i]=preless;
}
else if(root->val==num)
{
root->dup++;
ret[i]=preless+root->lesscount;
}
else if(root->val>num)
{
root->lesscount++;
root->left=insert(num,root->left,ret,i,preless);
}
else
{
root->right=insert(num,root->right,ret,i,preless+root->dup+root->lesscount);
}
return root;
}

public:
vector<int> countSmaller(vector<int>& nums) {
vector<int> ret(nums.size(),0);
if(nums.size()==0)
return ret;
Node *root=NULL;
for(int i=nums.size()-1;i>=0;i--)
{
root=insert(nums[i],root,ret,i,0);
}
return ret;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: