牛客网剑指Offer-JZ6.最小二乘法和暴力求解-将一组数从小到大排序

本文探讨了在非递减排序的旋转数组中找到最小元素的问题,提供了使用二分查找和暴力遍历两种方法的实现。通过实例展示了如何利用这两种策略解决此问题,适用于初学者理解数组旋转操作和搜索算法的应用。
# ==================JZ6。最小二乘法和暴力求解===========================================================
# 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。
# 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。
# NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。
#二分法或者暴力求解。
# =============================================================================

#二分法
class Solution:
    def minNumberInRotateArray(self, rotateArray):
        # write code here
        if rotateArray==[]:
            return 0
        elif len(rotateArray)==1:
            return rotateArray[0]
        elif len(rotateArray)==2:
            if rotateArray[0]<rotateArray[1]:
                return rotateArray[0]
            else:
                return rotateArray[1]
        else:
            start = 0
            end = len(rotateArray)-1
            mid = 0
            while end>start:
                mid = (start+end)//2
                if rotateArray[start]<rotateArray[end]:
                    return rotateArray[start]
                elif rotateArray[mid]<rotateArray[end]:
                    end=mid
                elif rotateArray[mid]>rotateArray[start]:
                    start = mid +1
                else:
                    start +=1
            return rotateArray[end]
while True:
    try:
        rol=list(map(int,input().strip('[]').strip(']').split(',')))
        rol.sort()
        minnum = Solution().minNumberInRotateArray(rol)
        print(minnum)
    except:
        break
    
#暴力求解
        
class Solution:
    def minNumberInRotateArray(self, rotateArray):
        if rotateArray==[]:
            return 0
        elif len(rotateArray)==1:
            return rotateArray[0]
        else:
            minimun=0
            if rotateArray[0]<rotateArray[1]:
                minimun = rotateArray[0]
            else:
                minimun=rotateArray[1]
            for i in range(2,len(rotateArray)-1):
                if rotateArray[i]<minimun:
                    minimun=rotateArray[i]
                else:
                    minimun=minimun
        return minimun
        
while True:
    try:
        rol=list(map(int,input().strip('[]').strip(']').split(',')))
        rol.sort()
        minnum = Solution().minNumberInRotateArray(rol)
        print(minnum)
    except:
        break     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十子木

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值