![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指Offer
drinmy
这个作者很懒,什么都没留下…
展开
-
【剑指offer】09.用两个栈实现队列
题目描述:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )思路:使用两个栈实现一个队列的功能,实现的效果图如下:(图源《算法小抄》)入队:将元素压入s1即可。出队:s2起到一个中转的作用:当s2为空的时候,可以把s1的所有元素去除添加进s2,这时候s2中的元素就是先进先出的顺序了,接着取出元素即可。代码实现:va原创 2020-07-08 11:48:45 · 138 阅读 · 0 评论 -
【剑指offer】30. 包含min函数的栈
链接:剑指offer30**题目描述**:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。**题目思路**:普通栈的 push() 和 pop() 函数的复杂度为 O(1)O(1) ;而获取栈最小值 min() 函数需要遍历整个栈,复杂度为 O(N)。本题难点: 将 min() 函数复杂度降为 O(1),可通过建立辅助栈实现:数据栈 stack : 栈 A用于存储所有元素,保证入栈 push()原创 2020-05-30 15:43:14 · 209 阅读 · 0 评论 -
【剑指Offer】 构建乘积数组
题目描述:给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]A[1]…*A[i-1]A[i+1]…*A[n-1]。不能使用除法。(注意:规定B[0] = A[1] * A[2] * … * A[n-1],B[n-1] = A[0] * A[1] * … * A[n-2];)1. 思路首先,B[i]的值可看做图中矩阵每一行的乘积。将矩...原创 2020-04-21 22:50:20 · 121 阅读 · 0 评论