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

来源:互联网 发布:ip地址查域名 编辑:程序博客网 时间:2024/06/09 21:33

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


0 0
原创粉丝点击