题目:输入两个整数序列。其中一个序列表示栈的push 顺序,判断另一个序列有没有可能是对应的pop 顺序。为了简单起见,我们假设push 序列的任意两个整数都是不相等的。

例如:输入的push 序列是1、2、3、4、5,那么4、5、3、2、1 就有可能是一个pop 系列

1.思路

(1)假设栈顶元素等于输出指针指向元素,弹出栈顶元素并后移输出指针;

(2)倘若不满足(1),则压栈输入指针元素,直到输入指针元素等于输出指针元素或者输出指针已经指向空。是前者情况,则分别省略压栈出栈操作,直接后移输入输出指针,若为后者,则返回false,因为此时栈顶不满足,所有输入序列已经压栈。

2.代码

bool decision(const char* in, const char* out){
if(!in||!out)
return false;
stack<char> s;
s.push(*in++);
while(!s.empty()){
if(s.top()==*out){
s.pop();
out++;
}
else{
//压栈,直到此时*in=*out或者in已经输入完毕
while(in!='\0'&&*in!=*out)
s.push(*in++); if(*in=='\0')//栈顶元素不满足且in已无输入
return false;
else{//*in==*out情况
in++;
out++;
}
}
}
return true;
}

每天一道算法题(11)——栈的push、pop 序列的更多相关文章

  1. 29. 栈的push,pop序列

    题目:给定2个整数序列,其中1个是栈的push顺序,判断另一个有没有可能是对应的pop顺序 解:其实这题主要是判断进栈次数和出栈次数誓不是相等.我是用栈作的,效率不高,每一个元素最多出栈1次,进栈1此 ...

  2. 每天一道算法题(4)——O(1)时间内删除链表节点

    1.思路 假设链表......---A--B--C--D....,要删除B.一般的做法是遍历链表并记录前驱节点,修改指针,时间为O(n).删除节点的实质为更改后驱指针指向.这里,复制C的内容至B(此时 ...

  3. 提前批笔试一道算法题的Java实现

    题目描述 这是2021广联达校招提前批笔试算法题之一. 我们希望一个序列中的元素是各不相同的,但是理想和显示往往是有差距的.现在给出一个序列A,其中难免有相同的元素,现在提供了一种变化方式,使得经过若 ...

  4. 数据结构---设计一个栈,push, pop, min 时间复杂度都是 O(1)

    普通的栈,push, pop 操作的复杂度是 O(1), 但是如果要找出其中的最小值,则需要 O(N)的时间. 题目要求 min 复杂度也是 O(1), 做法便是 空间换时间,每一步栈的最小值都用一个 ...

  5. 从一道算法题实现一个文本diff小工具

    众所周知,很多社区都是有内容审核机制的,除了第一次发布,后续的修改也需要审核,最粗暴的方式当然是从头再看一遍,但是编辑肯定想弄死你,显然这样效率比较低,比如就改了一个错别字,再看几遍可能也看不出来,所 ...

  6. 每天一道Java题[11]

    题目 synchronized怎么实现线程同步?请修改<每天一道Java题[10]>中的MyRunnableThread类以解决三个线程都获取到10的问题. 解答 方法一: 采用synch ...

  7. 【每天一道算法题】时间复杂度为O(n)的排序

    有1,2,……一直到n的无序数组,求排序算法,并且要求时间复杂度为O(n),空间复杂度为O(1),使用交换,而且一次只能交换两个数. 这个是以前看到的算法题,题目不难.但是要求比较多,排序算法中,时间 ...

  8. 小小c#算法题 - 11 - 二叉树的构造及先序遍历、中序遍历、后序遍历

    在上一篇文章 小小c#算法题 - 10 - 求树的深度中,用到了树的数据结构,树型结构是一类重要的非线性数据结构,树是以分支关系定义的层次结构,是n(n>=0)个结点的有限集.但在那篇文章中,只 ...

  9. 每天一道算法题(14)——N个降序数组,找到最大的K个数

     题目: 假定有20个有序数组,每个数组有500个数字,降序排列,数字类型32位uint数值,现在需要取出这10000个数字中最大的500个. 思路 (1).建立大顶堆,维度为数组的个数,这里为20( ...

随机推荐

  1. 快速的熟悉一个angular的项目从run看起

    config之类的都会注入到controller或者run里边

  2. Struts2架构流程

    [Struts2] Action实现. interceptor实现. Filter工作原理. 使用 拦截器来处理请求. 业务逻辑控制器与 Servlet API分离. ================ ...

  3. C语言基础三

    C--数组 一维数组的定义和引用 定义:类型说明符 数组名[常量表达式] int a[ 10 ];他表示定义了一个整形数组,数组名为a,有10个元素. 注意:C语言不允许对数组的大小做动态定义. 一维 ...

  4. macvim/babun+spf13-vim

    mac: macvim brew install macvim --with-cscope --with-lua --with-override-system-vim brew linkapps ma ...

  5. 算法练习2---斐波那契数列java版

    古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子, 假如兔子都不死,问每个月的兔子总数为多少? 数列:1   1   2   3   5   8   ...

  6. spring boot + thymeleaf 报错 org.thymeleaf.exceptions.TemplateInputException

    org.thymeleaf.exceptions.TemplateInputException: Error resolving template "admin/verifyPassword ...

  7. SQL Server 删除默认值

    alter table st_FuelConvertPatternSetting alter column tank_max_size decimal(5,2) not null declare @c ...

  8. oracle decode函数 和 case when

    1.oracle decode分支函数 select decode(to_char(B.LQSJ, 'hh24:mi:ss'), '00:00:00', to_char(B.LQSJ, 'yyyy-m ...

  9. MySQL for Mac在Mac终端导入导出.sql文件

    https://www.cnblogs.com/code4app/p/6222310.html 1.导入 打开终端输入:(前提是已经配置过MySQL环境变量) mysql -u root -p cre ...

  10. 马拉车——Manacher一篇看上去很靠谱的理解(代码显然易懂)

    由于回文分为偶回文(比如 bccb)和奇回文(比如 bcacb),而在处理奇偶问题上会比较繁琐,所以这里我们使用一个技巧,在字符间插入一个字符(前提这个字符未出现在串里).举个例子:s="a ...