博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LintCode "Count of Smaller Number before itself"
阅读量:5298 次
发布时间:2019-06-14

本文共 1753 字,大约阅读时间需要 5 分钟。

Warning: input could be > 10000...

Solution by segment tree:

struct Node{    Node(int s, int e) : start(s), end(e), cnt(0), left(nullptr), right(nullptr)    {};    int start;    int end;    int cnt;    //    Node *left;    Node *right;};class Solution {    Node *pRoot;    void update(int v)    {        Node *p = pRoot;        while(p)        {            p->cnt ++;            if(p->start == p->end) break;            int mid = (p->start + p->end) / 2;            if(v <= mid)            {                if(!p->left)                {                    p->left = new Node(p->start, mid);                }                p = p->left;            }            else            {                if(!p->right)                {                    p->right = new Node(mid + 1, p->end);                }                p = p->right;            }        }    }    int query(Node *p, int v)    {        if(!p) return 0;        int mid = (p->start + p->end) / 2;        if(v < mid)        {            return query(p->left, v);        }        else if(v == mid)        {            return p->left ? p->left->cnt : 0;        }        // v > mid        return (p->left ? p->left->cnt : 0) + query(p->right, v);    }public:   /**     * @param A: An integer array     * @return: Count the number of element before this element 'ai' is     *          smaller than it and return count number array     */    vector
countOfSmallerNumberII(vector
&A) { pRoot = new Node(0, 20000); vector
ret; for(auto v : A) { ret.push_back(query(pRoot, v - 1)); update(v); } return ret; }};
View Code

转载于:https://www.cnblogs.com/tonix/p/4874429.html

你可能感兴趣的文章
Oracle事务
查看>>
String类中的equals方法总结(转载)
查看>>
bash使用规则
查看>>
AVL数
查看>>
全栈12期的崛起之捡点儿有用的说说
查看>>
属性动画
查看>>
标识符
查看>>
路由跟踪工具0trace
查看>>
给大家分享一张CSS选择器优选级图谱 !
查看>>
Win7中不能调试windows service
查看>>
boost库使用:vs2013下boost::container::vector编译出错解决
查看>>
通过httplib2 探索的学习的最佳方式
查看>>
快来熟练使用 Mac 编程
查看>>
Node.js 入门:Express + Mongoose 基础使用
查看>>
plsql使用,为什么可以能看见其他用户的表
查看>>
一步步教你轻松学奇异值分解SVD降维算法
查看>>
使用pager进行分页
查看>>
UVA - 1592 Database
查看>>
Fine Uploader文件上传组件
查看>>
javascript中的传递参数
查看>>