【Leetcode】循环队列实现和括号匹配问题 目录 1.循环队列 2.括号匹配 1.循环队列
读过题后,我们很容易认为这道首选题链表,那么我们就以链表的思路分析一下: 首先明确一点就是这一块儿链表空间已经创建好了
我们用front和rear分别表示头和尾,那么我们知道初始状态front和rear指向同一个位置,那么不断插入数据rear不断后移,我们发现满的时候front和rear指向同一个位置,那么front和rear指向同一个位置是代表空还是满呢? 这里有两种方式解决,第一种是增加一个size判断空满;第二种是多开一个位置,在最后一个位置之后多开一个空位置,此时当rear和front相等时为空,当rear->next为front时为满。这个问题解决之后我们再看pop,连续的pop只需要让front往后移就可以,那么使用链表最难受的地方在于如何取尾,因为我们的rear指向的是尾的下一个,如果这里我们让rear指向尾,那么我们的初始化又会出问题,因为它会回到最初的front和rear指向同一个位置的空满问题上,当然这里解决方式有很多,比如添加一个prev指针指向front的前一个,或者使用双向链表等等……所以由此看出这道题用链表实际并不是最优解,正解是数组,当然数组思路大致也同上,我们选择多开一个位置,具体思路如下图所示:
那么我们接下来就完成这道题:
2.括号匹配
这道题我们的思路是如果是左括号,则入栈;如果是右括号,则出栈,将取出的左括号与该右括号匹配。比如如果我们给的是(([{}]))(),那么我们一开始都是左括号,都入栈,直到第一个右括号出现出栈一个左括号与之匹配,然后重复操作,直到下一个是左括号,则继续进栈,继续找与之匹配的右括号直到结束。 代码实现一下:当然这道题我们依然需要先把栈的结构给出
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/19937.html