栈与队列
文章平均质量分 51
楚洋的小跟班
日常报错记录、刷题记录(代码随想录)
展开
-
力扣 150题 逆波兰表达式求值 记录
ps:在做加减乘除的时候,是num2 和 num1做加减乘除而不是num1 和 num2,因为在逆波兰表示法(后缀表达式)中,操作数的顺序与它们在表达式中的出现顺序一致。所以,当从栈中弹出两个元素来应用一个操作符时,先弹出的是右操作数,而后弹出的(最近压入的)是左操作数。这种方法的时间复杂度为 O(n),其中 n 是 tokens 数组的长度,因为每个元素只被处理一次。空间复杂度主要是用于存储操作数的栈的空间,最坏情况下也是 O(n)。返回栈顶元素:遍历完成后,栈顶元素就是表达式的结果。原创 2024-07-12 22:00:22 · 273 阅读 · 0 评论 -
力扣 1047题 删除字符串中的所有相邻重复项 记录
使用一个循环从栈中弹出所有字符并构建结果字符串,然后使用 std::reverse 函数将字符串反转为正确的顺序。完成遍历后,栈中剩余的字符序列即为去除相邻重复后的结果,但顺序是逆的。栈的后入先出(LIFO)特性非常适合处理与顺序相关的对称和回溯问题。返回值:处理后的字符串,其中所有相邻的重复字符都被删除。遍历字符串中的每个字符。时间复杂度: O(n)空间复杂度: O(n)原创 2024-07-07 21:35:57 · 471 阅读 · 0 评论 -
力扣 225题 用队列实现栈 记录
为了达到这个目的,首先将队列前面的元素(除最后一个元素外)依次出队并重新入队到队列尾部。这样,原本的最后一个元素(栈顶元素)就移到了队列的前端,可以通过 que.pop() 直接移除并返回。在这个实现中,通过对队列的操作,模拟了栈的行为。由于队列的 back() 方法可以直接访问队尾元素,这里的队尾元素正是最后入栈的元素,因此可以直接返回。在栈的行为中,这将是最后一个被弹出的元素,符合后入先出的特性。MyStack 类中定义了一个公有成员 que,类型为 std::queue,用于存储栈中的元素。原创 2024-07-07 17:43:32 · 471 阅读 · 0 评论 -
力扣 232题 用栈实现队列 记录
队列是一种先入先出(FIFO)的数据结构,但栈是后入先出(LIFO)的数据结构。这里的目标是使用栈的属性来实现一个队列的操作。这样,stIn 的底部元素(即最早加入的元素)会转移到 stOut 的顶部,从而符合队列的出队顺序。由于栈是 LIFO 的,所以新加入的元素总是位于 stIn 的顶部。步骤2:从 stOut 弹出并返回栈顶元素,这个元素是当前队列的队首元素。步骤2:将获取到的元素再次压回 stOut 栈,以保持队列状态不变。功能:返回队列的队首元素,但不移除它。功能:将一个元素 x 加入队列。原创 2024-07-07 16:42:20 · 285 阅读 · 0 评论