剑指offer-python刷题-旋转数组的最小数字
发布日期:2021-07-28 12:03:07 浏览次数:5 分类:技术文章

本文共 1041 字,大约阅读时间需要 3 分钟。

题目:旋转数组的最小数字

把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。

输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。
NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。


刚开始没看懂题目,感觉就是直接判断一个数组中的最小值,因此就直接遍历求列表的最小值了,然后直接通过...

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

翻看讨论区才读懂这个问题,意思就是原本是一串非递减排序的数组,现在把他的前面几个元素直接挪到最后面,但是输入的就相当于两端非递减的。

因此只要找到相邻的两个元素,后一个小于前一个的,那么后一个就是最小的。

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

心得:

没看懂题是个很迷的事情

讨论区好多人说做二分查找,只是想找最小值,有必要用二分吗,二分的效率主要体现在:在一个有顺序的数组中找到某个指定的元素...(此观点保留)

转载地址:https://blog.csdn.net/sinat_42437278/article/details/117373645 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:剑指offer-python刷题-跳台阶扩展问题
下一篇:剑指offer-python刷题-用两个栈实现队列

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月06日 02时23分29秒