• 剑指Offer-Python(6-10)


    6、旋转数组的最小数字

    class Solution:
        def minNumberInRotateArray(self, rotateArray):
            l = len(rotateArray)
            if l == 0:
                return 0
    
            for i in rotateArray:
                if rotateArray[0] > i:
                    return i
            return rotateArray[0]
    
    
    s = Solution()
    t = [3, 4, 5, 1, 2]
    min = s.minNumberInRotateArray(t)
    print(min)

    7、斐波那契数列

    用递归也写了,但是好像太耗时,牛客这边系统不给过

    # -*- coding:utf-8 -*-
    class Solution:
        def Fibonacci(self, n):
            # write code here
            f = [0, 1, 1]
            if n <= 1:
                return f[n]
            if n == 2:
                return f[2]
            else:
                for i in range(3, n+1):
                    f.append(f[i - 1] + f[i - 2])
                return f[n]
    
    
    s = Solution()
    print(s.Fibonacci(2))
    print(s.Fibonacci(3))
    print(s.Fibonacci(4))
    print(s.Fibonacci(5))

    8、跳台阶

    因为只有两种步伐(一次跳一阶或一次跳两阶)。比如跳八个台阶时:当最后一步跳一节是一类跳法(此时前七阶的跳法有跳七个台阶的跳法);当最后一步跳两阶是另一种跳法(此时前6阶的跳法有跳6个台阶的跳法),因此得到规律,if n>2,f(n) = f(n+1)+f(n-2)

    class Solution:
        def jumpFloor(self, number):
            f = [0, 1, 2]
            if number <= 2:
                return f[number]
            else:
                for i in range(3, number+1):
                    f.append(f[i - 1] + f[i - 2])
                return f[number]
    
    
    s = Solution()
    print(s.jumpFloor(1))
    print(s.jumpFloor(2))
    print(s.jumpFloor(3))
    print(s.jumpFloor(4))
    print(s.jumpFloor(5))

    9、变态跳台阶

    根据第八题思路,由每步可以跨1-n阶,根据最后一步,可以分为n种类型。f(n) = f(1)+f(2)+....+f(n-2)+f(n-1) ;   f(n) = 2*f(n-1)  

    class Solution:
        def jumpFloorII(self, number):
            # write code here
            f = [0,1,2]
            for i in range(3,number+1):
                f.append(2*f[i-1])
            return f[number]
    
    s = Solution()
    print(s.jumpFloorII(5))

    10、矩形覆盖

    # -*- coding:utf-8 -*-
    class Solution:
        def rectCover(self, number):
            # write code here
            f = [0, 1, 2]
            for i in range(3, number + 1):
                f.append(f[i - 1] + f[i - 2])
            return f[number]
    
    
    s = Solution()
    print(s.rectCover(4))
  • 相关阅读:
    Spring系列-JDBC实例
    postman-记录cookies信息
    根据URL获取参数值得出json结果集,对外给一个接口让别人调用
    linux 软硬链接
    第一个shell程序
    Argparse简易教程
    SQLAlchemy 教程 —— 基础入门篇
    人机对战初体验—四子棋游戏
    python的Flask 介绍
    python的项目结构
  • 原文地址:https://www.cnblogs.com/dong973711/p/11970970.html
Copyright © 2020-2023  润新知