备战秋招——记录自己学习的第七天(刷题之剑指offer——旋转数组最小值、斐波那契数列、跳台阶(变态)、矩形覆盖)

第一题 旋转数组的最小数字

把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。

先来一个python的bug方法:

class Solution:
    def minNumberInRotateArray(self, rotateArray):
    if len(rotateArray) == 0:
    	return 0
    else:
    	return min( rotateArray)

不知道面试的时候面试官看到会不会直接让我出去 _,再来一个bug的方法:

class Solution:
    def minNumberInRotateArray(self, rotateArray):
    if len(rotateArray) == 0:
    	return 0
    else:
    	rotateArray.sort()
    	return rotateArray[0]

来一个正经的方法:

# -*- coding:utf-8 -*-
class Solution:
    def minNumberInRotateArray(self, rotateArray):
        # write code here
        if len(rotateArray) == 0:
            return 0
        elif len(rotateArray) == 1:
            return rotateArray[0]
        else:
            for i in range(0,len(rotateArray)-1):
                if rotateArray[i] > rotateArray[i+1]:
                    return rotateArray[i+1]
            return rotateArray[0]

二分查找:

class Solution:
    def minNumberInRotateArray(self, rotateArray):
        # write code here
        if len(rotateArray) == 0:
            return 0
        elif len(rotateArray) == 1:
            return rotateArray[0]
        else:
            left = 0
            right = len(rotateArray)-1
            while left < right:
                mid = (left + right) // 2
                if rotateArray[mid] > rotateArray[right]:
                    left = mid+1
                else:
                    right = mid
            return rotateArray[left]

第二题 斐波那契数列

大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。
n<=39
题目中的要求为: 0 1 1 2 3 5 8…………每项是前两项的和

先来一种最简单的方法:

# -*- coding:utf-8 -*-
class Solution:
    def Fibonacci(self, n):
        # write code here
        if n == 0:
            return 0
        elif n == 1:
            return 1
        else:
            f1 = 0
            f2 = 1
            for i in range(n-1):
                f3 = f1 + f2
                f1 = f2
                f2 = f3
                i +=1
            return f3
        	

再来一个升级版:

class Solution:
    def Fibonacci(self, n):
        # write code here
        ret = [0,1,1]
        while len(ret)-1 < n:
            ret.append(ret[-1]+ret[-2])
        return ret[n]

第三题 跳台阶

一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。

1.假设当有n个台阶时假设有f(n)种走法。
2.青蛙最后一步要么跨1个台阶要么跨2个台阶。
3.当最后一步跨1个台阶时即之前有n-1个台阶,根据1的假设即n-1个台阶有f(n-1)种走法。
4. 当最后一步跨2个台阶时即之前有n-2个台阶,根据1的假设即n-2个台阶有f(n-2 )种走法。
5.显然n个台阶的走法等于前两种情况的走法之和即f(n)=f(n-1)+f(n-2)。
6.找出递推公式后要找公式出口,即当n为1、2时的情况,显然n=1时f(1)等于1,f(2)等于2
这很明显是一个首项为1 2 的斐波那契数列

class Solution:
    def jumpFloor(self, number):
    	ret = [1,2,3]
        while len(ret) < number:
            ret.append(ret[-1]+ret[-2])
        return ret[number-1]

第四题 变态跳台阶

一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

1.假设青蛙最后一次跳了一阶,那么有f(n-1)次跳法;假设青蛙最后一次跳了二阶,那么有f(n-2)种跳法……假设青蛙最后一次跳了n-1阶,那么有f(1)种跳法;假设青蛙最后一次跳了n阶,那么有f(0)种跳法,其中f(0) = 0
2.根据(1),有:f(n) = f(n-1) + f(n-2) + f(n-3) + …… + f(1) + f(0)
3.f(n-1) = f(n-2) + f(n-3) + …… + f(1) + f(0)
4.根据(2)、(3),有f(n) = 2f(n-1) = 2(2f(n-2)) = …… = 2**(n-1)[f(1)+ f(0)] = 2**(n-1)1 = 2*(n-1)

import math
class Solution:
    def jumpFloorII(self, number):
        # write code here
        if number == 0:
            return 0
        elif number > 0:
            return math.pow(2,number-1)

第五题 举行覆盖

斐波那契数列数列,依旧可以画图找规律

# -*- coding:utf-8 -*-
class Solution:
    def rectCover(self, number):
        # write code here
        ret = [0,1,2]
        while len(ret)-1 < number:
            ret.append(ret[-1]+ret[-2])
        return ret[number]
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园建设方案旨在通过先进的信息技术,为师生提供一个全面智能的感知环境和综合信息服务平台。该方案正处在从信息化第二阶段向第三阶段过渡的关键时期,致力于实现校园服务和管理的全面智能化。 方案的核心目标是构建一个集成的校园地理信息服务平台,通过该平台实现资产管理、房产信息管理、基础设施管理、绿化管理和能源监测管理等功能。同时,该平台将提供校园漫游、信息服务、引服务、活动通知、用房服务和客流统计等多样化服务,以促进校园的和谐、绿色、平安和便捷。 在技术层面,智慧校园建设方案强调系统集成能力、数据统一分析能力、系统资源共享能力以及大数据集成处理能力。通过这些能力,可以构建统一的校园地理信息平台,提供综合的应用支撑和管理能力,实现系统平滑演进。 应用方向上,智慧校园建设方案围绕和谐校园、绿色校园、平安校园和掌上校园四个维度展开。和谐校园侧重于提供校园漫游、信息服务、引服务等,增强师生的校园体验。绿色校园则关注资产管理和能源监测,推动校园的可持续发展。平安校园通过视频监控、数字巡更等手段,确保校园安全。掌上校园则利用移动设备,实现校园服务的随时随地访问。 最终,智慧校园建设方案将通过三维虚拟校史馆、720度成像技术等创新应用,提供身临其境的校园漫游体验,同时通过可视化管理和数据分析,优化校园资源配置和运营效率,实现校园管理的智能化和现代化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值