关于数据结构

Posted Nico&11101001

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于数据结构相关的知识,希望对你有一定的参考价值。

单调队列

code by zhx

void dandiao() {
    int front=1,tail=0;
    for (int a=1;a<=k;a++)
    {
        while (tail>=front && z[a]<q[tail][0])
            tail--;
        tail++;
        q[tail][0]=z[a];q[tail][1]=a;
    }

    for (int a=k+1;a<=n;a++)
    {
        while (tail>=front && z[a]<q[tail][0])
            tail--;
        tail++;
        q[tail][0]=z[a];q[tail][1]=a;
        if (q[front][1]==a-k) front++;
    }
}

   手写队列+手写 栈:

 stack:

class stack {
    int size=0,s[10000];
    void enque(int x) { s[++size]=x;}
    void deque() { size--;}
    bool empty() { return size!=0;}
    int front() { return s[size];
}

队列:

class queue {
    int front=1,tail=0,q[10000];
    void enque(int x) { q[++tail]=x;}
    void deque() { front++;}
    bool empty() { return front>tail;}
    int front1() { return q[front];
}

STL:中的priority_queue

priority_queue<int> heap;

heap.push(-x);//logn
heap.pop();//logn
heap.top();//1
heap.size();//1
heap.empty();//1

 

并查集,启发式合并

把节点较少的合并到节点节点较多的上

是一种优化

void merge(int p1,int p2) {
    int f1=getf(p1);
    int f2=getf(p2);
    if (f1!=f2) {
        if (size[f1]>size[f2]) swap(f1,f2);
        f[f1]=f2;
        size[f2]+=size[f1];
    }
}

 

杂七杂八的线段树

code by zhx

技术分享线段树

 

以上是关于关于数据结构的主要内容,如果未能解决你的问题,请参考以下文章

关于js----------------分享前端开发常用代码片段

关于在各浏览器中插入音频文件的html代码片段

springcloud报错-------关于 hystrix 的异常 FallbackDefinitionException:fallback method wasn't found(代码片段

如何在片段中使用 GetJsonFromUrlTask​​.java

几个关于js数组方法reduce的经典片段

关于打开一个新活动以响应对片段内的 RecyclerView 项目的点击