• 剑指offer-旋转数组的最小数字-数组-python


    题目描述

    把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。
    输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。
    例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。
    NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。
     
    思路
    由题意所知,旋转之后,输出最小的元素,那么我们可以用min()。
    在不适用min()的时候,使用二分查找。
     
    链接:https://www.nowcoder.com/questionTerminal/9f3231a991af4f55b95579b44b7a01ba?f=discussion
    来源:牛客网
    
    # -*- coding:utf-8 -*-
    class Solution:
        def minNumberInRotateArray(self, rotateArray):
            # 可以使用min()函数, 但是在不适用min函数的情况下,思路应该是二分查找
            # 下面使用 递归实现2分查找,其中递归的时候必须使用return!!! 不然会返回none
            # write code here 
            start = 0
            end = len(rotateArray) - 1
            mid = int((start + end) / 2)
            if len(rotateArray) == 2:
                if rotateArray[0]>rotateArray[1]:
                    return rotateArray[1]
                else:
                    return rotateArray[0]
     
            elif rotateArray[mid] > rotateArray[end]:
                return self.minNumberInRotateArray(rotateArray[mid:end + 1])
            elif rotateArray[mid] < rotateArray[start]:
                return self.minNumberInRotateArray(rotateArray[start:mid + 1])
    class Solution:
        def minArray(self, numbers: [int]) -> int:
            i, j = 0, len(numbers) - 1
            while i < j:
                m = (i + j) // 2
                if numbers[m] > numbers[j]: i = m + 1
                elif numbers[m] < numbers[j]: j = m
                else: j -= 1
            return numbers[i]
    
    """作者:jyd
    链接:https://leetcode-cn.com/problems/xuan-zhuan-shu-zu-de-zui-xiao-shu-zi-lcof/solution/mian-shi-ti-11-xuan-zhuan-shu-zu-de-zui-xiao-shu-3/
    来源:力扣(LeetCode)
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。"""
  • 相关阅读:
    ccf-集合竞价-201412-3
    ccf-命令行选项-201403-3
    ccf-路径解析201604-3
    ccf-炉石传说-201609-3
    CCF-权限查询-201612-3
    10个顶级的CSS UI开源框架
    移动端前端UI库—Frozen UI、WeUI、SUI Mobile
    @RenderBody、@RenderSection、@RenderPage、Html.RenderPartial、Html.RenderAction的作用和区别
    对比其它软件方法评估敏捷和Scrum
    SQL SERVER 2008 中三种分页方法与总结
  • 原文地址:https://www.cnblogs.com/ansang/p/12033579.html
Copyright © 2020-2023  润新知