剑指Offer(Python语言)面试题9,10

栈和队列

面试题9:用两个栈实现队列

题目:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入节点和在队列头部删除节点的功能。

# -*- coding:utf-8 -*-
class Solution:
    def __init__(self):
        self.stack1 = []
        self.stack2 = []

    def push(self, node):
        self.stack1.append(node)

    def pop(self):
        if self.stack2:
            return self.stack2.pop()
        else:
            while self.stack1:
                self.stack2.append(self.stack1.pop())
            return self.stack2.pop()

面试题10:斐波那契数列

题目一:求斐波那契数列的第n项。

写一个函数,输入n,求斐波那契数列的第n项,斐波那契数列的定义如下:

def fib (n):
    if n < 1:
        return -1
    if (1 == n) or (2 == n):
        return 1
    return fib(n-1) + fib(n-2)
 
def main():
    n = int(input("请输入求解第几项: "))
    result = fib(n)
    print("结果为%d"%result)
 
if __name__=='__main__':
    main()

 

 

 

 

 

 

你可能感兴趣的:(剑指offer)