《剑指Offer》----编程题之Python实现(共66题)7-12

题目7:(斐波那契数列)
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。n<=39
# -*- coding:utf-8 -*-
class Solution:
    def Fibonacci(self, n):
        a, b = 0,1
        for i in range(n):
            a,b=b,a+b
        return a

题目8:(跳台阶)
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
# -*- coding:utf-8 -*-
class Solution:
    def jumpFloor(self, number):
        a, b = 0,1
        for i in range(number+1):
            a,b=b,a+b
        return a

题目9:(变态跳台阶)
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
# -*- coding:utf-8 -*-
class Solution:
    def jumpFloorII(self, number):
        if number < 3:
            return number
        a = [0,1,2]
        for i in range(3, number+1):
            a.append(sum(a)+1)
        return a[number]

题目10:(矩形覆盖)
我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
# -*- coding:utf-8 -*-
class Solution:
    def rectCover(self,number):
        # write code here
        res = [0,1,2]
        while len(res)<=number:
            res.append(res[-1]+res[-2])
        return res[number]

题目11:(二进制中1的个数)
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示
# -*- coding:utf-8 -*-
class Solution:
    def NumberOf1(self, n):
        if n < 0:
            s = bin(n & 0xffffffff)
        else:
            s = bin(n)
        return s.count('1')

题目12:(数值的整数次方)
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
# -*- coding:utf-8 -*-
class Solution:
    def Power(self, base, exponent):
        a = 1
        if exponent == 0:
            return 1
        elif exponent>0:
            for i in range(exponent):
                a = a*base
            return a
        elif exponent<0:
            for i in range(-exponent):
                a = a*base
            return 1/a


或者:
class Solution:
    def Power(self, base, exponent):
        return base**exponent


你可能感兴趣的:(Python)