zoukankan      html  css  js  c++  java
  • 剑指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))
  • 相关阅读:
    UIButton 动态改变文本闪烁问题
    利用GDataXML解析XML文件
    限制键盘只能输入数字
    获得view所在的控制器
    使用Canvas绘制简单的时钟控件
    Spring整合ActiveMq消息队列
    Symmetric Key Encryption DES
    OSPF 高级实验
    OSPF 基础实验
    EIGRP 高级实验
  • 原文地址:https://www.cnblogs.com/dong973711/p/11970970.html
Copyright © 2011-2022 走看看