
数据结构
给个选择
世界上只有10种人,一种懂二进制,一种不懂。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
单调栈【完整思路+代码】
看到这道题,首先我们会想到的肯定是暴力模拟。外层循环i是每个数,内层循环j是从i-1到最开头,找第一个比i小的数。这样做的话,如果数据是10的5次方,那么双重循环时间是非常可怕的。 然后我们来分析一下上面这个思路,看看有哪里可以优化。因为找的肯定是比他小且最接近的数,那么如果第2个数比第一个数小,对于第三个数来说第一个数肯定是没用的(因为第二个距离第三个数更近),而且对于第四个第五个以至于第n个...原创 2020-02-23 10:24:20 · 435 阅读 · 0 评论 -
约瑟夫问题【洛谷】
约瑟夫环有很多种解法,这里我提供一种数据结构,用队列来模拟。直接采用了STL里面队列的模板,看下面代码之前,跟我默念,STL大法好!!哈哈哈。 大致思路:先把所有人都放进队列里面,然后从1开始出队,1出队再进队,这样1就从队首到了队尾,就这么一直循环,如果到了第m个就只出队不让他进队。这样队列里面人数越来越少,到最后就出完了,代码如下: #include<bits/stdc++.h>...原创 2020-02-21 09:13:43 · 639 阅读 · 0 评论 -
队列安排【洛谷】
思路:这个就是一道模拟二叉树的题。反正我是这么理解的。 首先建立一个结构体数组,包含左孩子,右孩子,以及一个变量用来标记后面他是否被删除了。 然后就是插入的时候先判断p(根据题目),判断完p之后还要判断k的左右孩子。 举个栗子:比如说i为2,k为3,p为1.那么现在2要往3的右边插队,你就首先要判断3原先右边有没有数,没有就直接插,有的话就是吧3的右孩子赋给2的右孩子,然后把3的右孩子变成2. ...原创 2020-02-21 09:02:01 · 550 阅读 · 0 评论