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
  • 相关阅读:
    在WPF中判断是是否为设计时模式(转)
    后缀数组小结
    运算符重载,输出流运算符重载
    ZOJ 3699
    米勒罗宾大素数测定
    FZU 2109 Mountain Number 数位DP
    考试复习
    java文件输入输出
    纯虚函数与抽象类
    转载:stream iterators C++ 用法
  • 原文地址:https://www.cnblogs.com/yanmk/p/9186475.html
Copyright © 2011-2022 走看看