zoukankan      html  css  js  c++  java
  • 【leetcode】33. Search in Rotated Sorted Array

    题目如下:

    解题思路:题目要求时间复杂度是O(log n),而且数组也是有序的,那么可以考虑采用二分查找法。那么解题的关键就是找出转折点,找到了转折点后,把数组拆分成两段,再分别用二分查找,即可得到答案。

    代码如下:

    class Solution(object):
        def search(self, nums, target):
            """
            :type nums: List[int]
            :type target: int
            :rtype: int
            """
            if len(nums) == 0:
                return -1
            split = 0
            for i in xrange(len(nums)-1):
                if nums[i] > nums[i+1]:
                    split = i + 1
                    break
    
            import  bisect
            #print nums[:split]
            res = bisect.bisect_left(nums[:split],target)
            #print res
            if res < len(nums[:split]) and nums[:split][res] == target:
                return res
    
            res = bisect.bisect_left(nums[split:], target)
            #print nums[split:]
            #print res
            if res < len(nums[split:]) and nums[split:][res] == target:
                return res + split
            return -1
  • 相关阅读:
    iOS --- Touch ID指纹解锁
    Android手势滑动Tab
    Android:自定义Dialog
    Android:视频(VideoView/MediaPlayer)
    Android用户界面开发:Fragment
    Android用户界面开发:TabHost
    Android:Animation
    WallPaper
    linux网络设备驱动
    Android通讯:短信
  • 原文地址:https://www.cnblogs.com/seyjs/p/8995983.html
Copyright © 2011-2022 走看看