zoukankan      html  css  js  c++  java
  • 剑指offer 面试11题

    面试11题:

    题目:

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

    解题思路:二分查找,以及分情况考虑(稍显麻烦)详见:剑指offer P83

    解题代码:

    # -*- coding:utf-8 -*-
    class Solution:
        def minNumberInRotateArray(self, rotateArray):
            # write code here
            if not rotateArray:
                return
            if len(rotateArray)==0:
                return 0
            index1=0
            index2=len(rotateArray)-1
            indexMid=index1
            while (rotateArray[index1]>=rotateArray[index2]):
                if (index2-index1)==1:
                    indexMid=index2
                    break
                indexMid = (index1+index2)//2
                # 如果index1 index2 indexMid三者相等
                if rotateArray[index1]==rotateArray[index2] and rotateArray[indexMid]==rotateArray[index1]:
                    return self.minValue(rotateArray,index1,index2)
    
                if rotateArray[indexMid]>=rotateArray[index1]:
                    index1=indexMid
                if rotateArray[indexMid]<=rotateArray[index2]:
                    index2=indexMid
    
            return rotateArray[indexMid]
    
        def minValue(self,rotateArray,index1,index2):
            res=rotateArray[index1]
            for i in range(index1+1,index2+1):
                if res>rotateArray[i]:
                    res=rotateArray[i]
            return res
  • 相关阅读:
    大数据组件
    k8s 证书过期时间调整
    k8s Metrics Server 获取资源指标与 hpa 部署
    k8s修改集群coredns
    k8s 版本升级
    k8s node节点剔除与增加
    etcd 单节点部署、备份与恢复
    k8s 连接ceph集群
    efk收集k8s 容器日志安装记录
    prometheus 监控k8s 安装测试记录
  • 原文地址:https://www.cnblogs.com/yanmk/p/9186475.html
Copyright © 2011-2022 走看看