LeetCode算法题
文章平均质量分 59
今天也要写bug、
编程三问:xx是什么?为什么要有xx?xx是怎么实现的?
展开
-
LeetCode数据结构题---用栈实现队列
原题链接:用栈实现队列 思路 栈的特性是先进后出,而队列的特性是后进先出,也就是说,如果把一串数据放进栈里面,它会倒着拿出来,但是队列是会正着拿出来。这里题目给了两个栈,如果我们将数据放到一个栈里面,再从这个栈里面拿出来放到另一个栈里面,那取出来不就是成正的了吗? 为了便于区分,我们将第一个栈命名为pushs,因为入队的数据都必须先放在这个栈里面,第二个栈命名为pops,因为如果要出队或者取最先入栈的数据,必须先将第一个栈的数据全部转移到这个栈里面,如果没能全部转移,那么数据就会造成混乱,无法做到先进先出原创 2021-08-04 00:04:44 · 255 阅读 · 1 评论 -
LeetCode数据结构题---用队列实现栈
原题链接:用队列实现栈 思路 栈的特性是后进先出,而队列的特性是后进后出,如果使用两个队列,则可以实现后进先出的特点: 代码实现 首先需要用到队列的数据,因此可以直接将队列的函数赋值过来: typedef int QDataType; typedef struct QueueNode { struct QueueNode* next;//指向下一个节点 QDataType data; }QNode; typedef struct Queue { QNode* head;//头指针,指向第一个节点原创 2021-08-03 17:18:22 · 184 阅读 · 3 评论 -
LeetCode数据结构题---有效的括号
原题链接:有效的括号 思路 这个题是一个类似于栈结构的问题,它需要在栈顶放入一个左括号,然后这时候有一个右括号和这个栈顶的左括号进行匹配,匹配完成后左括号出栈,如果失败则返回false,当所有括号都匹配完成以后,栈里面没有数据,这时候返回true 有几个人需要注意的点: 如果一开始就是右括号比如这种")(",那肯定是不匹配的,因此我们需要在读取第一个右括号时判断栈里面是否为空,如果为空则说明没有和这个右括号想匹配的左括号,这个时候返回false。 最终一定是栈里面没有数据才返回true,如果是这种情况{(原创 2021-08-03 13:39:49 · 404 阅读 · 2 评论