0910-0911

0910:

1.有效的括号--对应LeedCode20

 解答:

测试结果:

 

2.用栈实现队列--对应LeedCode232

解答: 

测试结果:

3.用队列实现栈--对应LeedCode225

思路:

        为了满足栈的特性,我们可以使用两个队列实现栈的操作,其中queue1用于存储栈内的元素,queue2作    为入栈操作的辅助队列。
       入栈操作时,首先将元素入队到queue2,然后将 queue1的全部元素依次出队并入队到queue2,此时queue2的前端的元素即为新入栈的元素,再将queue1和queue2互换,则queue1的元素即为栈内的元素,queue1的前端和后端分别对应栈顶和栈底。    
      由于每次入栈操作都确保queue1的前端元素为栈顶元素,因此出栈操作和获得栈顶元素操作都可以简单实现    出栈操作只需要移除queue1的前端元素并返回即可,获得栈顶元素操作只需要获得queue1的前端元素并返回即可(不移除元素)。

代码:

 测试结果:

 

0911:

1.栈和队列的基础知识

      1.1栈(Stack),也称为堆栈,它是一种特殊的线性表,只允许在表的一端进行插入和删除操作。允许在表操作的一端称为栈顶(Top),另一端称为栈底(Bottom)。栈顶是动态变化的,它由一个称为栈顶指针的变量指示。当表中没有元素时,称为空栈。栈的插入操作称为入栈或进栈,删除操作称为出栈或退栈。

      1.2队列(queue)是一种只能在不同端进行插入或删除操作的线性表。 进行插入的一端称做队尾(rear),进行删除的一端称做队头或队首 (front)。队列的插入操作通常称为进队或入队(push),队列的删除操作通常 称为出队或离队(pop)。

2.删除字符串中的所有相邻重复项 --对应LeetCode 1047 

 

解答:

 

3.逆波兰表达式求值--对应 LeetCode 150

 

思路:

       计算逆波兰表达式的值时,使用一个栈存储操作数,从左到右遍历逆波兰表达式,如果遇到操作数,则将操作数入栈;如果遇到运算符,则将两个操作数出栈,其中先出栈的是右操作数,后出栈的是左操作数,使用运算符对两个操作数进行运算,将运算得到的新操作数入栈。

解答:

 

测试结果:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值