https://leetcode.com/problems/search-in-rotated-sorted-array/

https://leetcode.com/problems/search-in-rotated-sorted-array/

1.寻找初始的index 也就是rotate的情况 

2. 在顺序的列表里 二分查找 

如果没有 返回-1 如果有 再减去startindex

注意 减去startindex可能会出现负数的情况 在加一个len(list)再取len(list)余

class Solution:
    # @param {integer[]} nums
    # @param {integer} target
    # @return {integer}
    def search(self, nums, target):
        #找startindex并且把nums编程普通顺序的
        startindex=0
        for i in range(len(nums)-1):
            if nums[i]>nums[i+1]:
                startindex=len(nums)-1-i
                nums=nums[i+1:]+nums[:i+1]
        s=0
        e=len(nums)-1
        #过大过小
        if target<nums[0] or target>nums[-1]:
            return -1
        #和首尾相同
        if target==nums[-1] :
            return len(nums)-1-startindex
        if target==nums[0] :
            return (len(nums)-startindex)%len(nums)
        二分查找
        while s!=e-1:
            if nums[(e+s)/2]>target:
                e=(e+s)/2
            elif nums[(e+s)/2]<target:
                s=(e+s)/2
            else:
                return ((e+s)/2-startindex+len(nums))%len(nums)
        return -1


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值