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

    rotated sorted array, 肯定有一半是有序的,只有一半中有旋转。

    1 2 3 4 5 6 

    5 6 1 2 3 4(s-mid 是旋转的)

    3 4 5 6 1 2 (mid-end 是旋转的)

    没有旋转的一半中,起始点肯定小于终止点,找到没有旋转的一半,确定目标值是不是在这一半,如果没在就在旋转的一半中进行二分查找

    int binarySearch(vector<int> & nums, int s, int e, int target)
        {
            if(nums[s]==target)
            return s;
            if(nums[e]==target)
                return e;
    
        if(s>=e)
                return -1;
       int mid=s+(e-s)/2;
        if(nums[mid]==target)
            return mid;
    
        if(nums[mid]>nums[s])
        {
            if(nums[s]<target&& nums[mid]>target)
            {
    
                return binarySearch(nums, s, mid, target);
            }
            else
                return binarySearch(nums, mid+1, e, target);
    
        }
    
    
        if(nums[mid+1]<=nums[e])
        {
            if(nums[mid]<target&& nums[e]>target)
                return binarySearch(nums,mid+1, e,target);
            else
                return binarySearch(nums,s, mid, target);
    
        }
    
    
        }
    
        int search(vector<int>& nums, int target) {
            int n=nums.size();
            if(n<1)
                return -1;
            return binarySearch(nums,0,n-1, target);
    
    
    
        }
    

      

  • 相关阅读:
    Java 抽象类
    Java 多态
    Java 重写与重载
    Java继承
    声卡驱动
    Sublime Text 3快捷键
    近年来世界各地ICO的花式骗局盘点
    区块链未能大爆发的影响因素有哪些?
    BCH分叉是一次站队博弈
    一文读懂百倍币的诞生背景
  • 原文地址:https://www.cnblogs.com/fanhaha/p/7308322.html
Copyright © 2011-2022 走看看