剑指Offer
drinmy
这个作者很懒,什么都没留下…
展开
-
【剑指offer】09.用两个栈实现队列
题目描述: 用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 ) 思路: 使用两个栈实现一个队列的功能,实现的效果图如下: (图源《算法小抄》) 入队:将元素压入s1即可。 出队:s2起到一个中转的作用:当s2为空的时候,可以把s1的所有元素去除添加进s2,这时候s2中的元素就是先进先出的顺序了,接着取出元素即可。 代码实现: va原创 2020-07-08 11:48:45 · 122 阅读 · 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 · 180 阅读 · 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 · 108 阅读 · 0 评论