33. 搜索旋转排序数组

简介: 33. 搜索旋转排序数组

image.png


二分法的思想来做这道题目


class Solution {
    public int search(int[] nums, int target) {
         if(nums==null||nums.length==0){
            return -1;
        }
        int start=0;
        int end=nums.length-1;
        while(start<=end){   
            int mid=start+(end-start)/2;
            if(nums[mid]==target){
                return mid;
            }
            if(nums[start]<=nums[mid]){ //判断左侧区间递增
                if(target>=nums[start]&&target<nums[mid]){   //判断是否位于区间之中
                    end=mid-1;
                }else{
                    start=mid+1;
                }
            }else{                       //判断右侧区间递增
                if(target>nums[mid]&&target<=nums[end]){   //判断是否位于这个区间 
                    start=mid+1;
                }else{
                    end=mid-1;
                }
            }
        }
        return -1;
    }
}


详情可参考:

https://leetcode-cn.com/problems/find-minimum-in-rotated-sorted-array/solution/yi-wen-jie-jue-4-dao-sou-suo-xuan-zhuan-pai-xu-s-3/

目录
相关文章
|
6月前
|
算法
【算法】二分算法——搜索插入位置
【算法】二分算法——搜索插入位置
|
4月前
|
索引
Leetcode第三十三题(搜索旋转排序数组)
这篇文章介绍了解决LeetCode第33题“搜索旋转排序数组”的方法,该问题要求在旋转过的升序数组中找到给定目标值的索引,如果存在则返回索引,否则返回-1,文章提供了一个时间复杂度为O(logn)的二分搜索算法实现。
38 0
Leetcode第三十三题(搜索旋转排序数组)
|
6月前
|
算法
LeetCode第81题搜索旋转排序数组 II
文章讲解了LeetCode第81题"搜索旋转排序数组 II"的解法,通过二分查找算法并加入去重逻辑来解决在旋转且含有重复元素的数组中搜索特定值的问题。
LeetCode第81题搜索旋转排序数组 II
|
6月前
|
算法
LeetCode第33题搜索旋转排序数组
这篇文章介绍了LeetCode第33题"搜索旋转排序数组"的解题方法,通过使用二分查找法并根据数组的有序性质调整搜索范围,实现了时间复杂度为O(log n)的高效搜索算法。
LeetCode第33题搜索旋转排序数组
|
8月前
|
存储 算法 数据挖掘
LeetCode 题目 81:搜索旋转排序数组 II
LeetCode 题目 81:搜索旋转排序数组 II
|
9月前
|
算法 测试技术 C#
【二分查找】【z型搜索】LeetCode240:搜索二维矩阵
【二分查找】【z型搜索】LeetCode240:搜索二维矩阵
|
算法 索引
【Leetcode】1480. 一维数组的动态和、35. 搜索插入位置
目录 1480. 一维数组的动态和 35. 搜索插入位置
40 0
|
存储 索引
二分查找问题(关键:确定搜索区间)
二分查找问题(关键:确定搜索区间)