zoukankan      html  css  js  c++  java
  • 剑指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)
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。"""
  • 相关阅读:
    如何在WINDOWS SERVER 2008搭建IIS7+ASP网站
    无需破解:Windows Server 2008 R2 免费使用 7200天
    渗透测试工具Nmap从初级到高级
    案例:Mysql慢SQL与加索引前后对TPS的影响
    JProfiler 9.1.1部署及使用
    内存溢出及Jvm监控工具
    MySQL监控
    Java线程及Jvm监控工具
    系统资源监控--windows
    Linux系统资源监控--linux命令、nmon和spotlight
  • 原文地址:https://www.cnblogs.com/ansang/p/12033579.html
Copyright © 2011-2022 走看看