题目09 用两个栈实现队列
用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 ),难度是easy
思路
一个A栈用来入队,一个B栈用来出队,出队时先判断出队栈B是否为空,若空则将入队栈A的元素出栈并入B栈,在将栈顶元素弹出即可。
代码
class CQueue:
def __init__(self):
self.stack_in = []
self.stack_out = []
def appendTail(self, value: int) -> None:
self.stack_in.append(value)
def deleteHead(self) -> int:
if not self.stack_out:
if not self.stack_in: # 都为空
return -1
else: # 把in栈中的东西全部倒入out栈中
while self.stack_in:
self.stack_out.append(self.stack_in.pop())
return self.stack_out.pop()
题目10 斐波那契数列1
这题就是实现斐波那契数列,思路就是存放F(N-1)和F(N-2)并不断更新维护,最后返回二者之和,难度是easy
class Solution:
def fib(self, n: int) -> int:
if n == 0:
return 0
if n == 1:
return 1
res = [0,1]
for i in range(2,n):
tmp = res[0]
res[0] = res[1]
res[1] = res[1] + tmp
return sum(res)%1000000007#题目中要求进行取模