LeetCode
未闻名
待到山花烂漫时,她在丛中笑。
展开
-
剑指 Offer 09. 用两个栈实现队列
原理栈的特征:先进后出队列的特征:先进先出那么,很明显,可以使用两个栈实现对队列的模拟。(这里模拟的是队尾入队,队头出队)思路很重要的是,这里一定要认识到,我们的两个栈,一个用来入队,一个用来出队,才是最合理的。也就是说,入队栈只用来入队,当需要出队的时候,才去管出队栈。如果出队栈空,则将入队栈全部出栈至入队栈,然后弹出栈顶元素;如果出队栈不空,则直接弹出栈顶元素即可。代码:class CQueue { Deque<Integer> stack1; Deque&l原创 2022-03-07 11:35:24 · 138 阅读 · 0 评论 -
剑指 Offer 30. 包含min函数的栈
要求push,pop,min,top操作都是O(1)的时间复杂度。这里的min指的是返回栈内最小元素。对应leetcode:剑指 Offer 30. 包含min函数的栈思路看到需要0(1)的时间复杂度,毫不犹豫想到肯定要借助辅助空间,这是很典型的空间换时间的案例。那么,在这种情况下,由于栈的变动会导致栈内最小元素跟随着变动,所以,可以再建立一个辅助栈,模拟最小元素的变动情况。需要注意的是,辅助栈的栈底元素一定要与原栈保持一致,这才能保证在最后只剩一个元素的时候,返回正确的最小值。代码:class原创 2022-03-07 14:13:22 · 279 阅读 · 0 评论