leetcode --- Search in Rotated Sorted Array

    科技2022-07-11  88

    一.题目

        在一个颠倒了一次的有序数组里查看是否指定数字的索引,如果有返回该数字在数组里的索引,没有返回-1

        如: 

    Input: nums = [4,5,6,7,0,1,2], target = 0 Output: 4

    二.思路

        既然是有序,肯定优先考虑二分查找,不过考虑到某些区域是顺序打乱的,需要对二分查找进行一点的调整即可

    三.代码

       

    class Solution { public int search(int[] nums, int target) { return binarySearch(nums,target,0,nums.length-1); } public int binarySearch(int[] nums,int target,int low,int high) { if(low>=high) { if(nums[low]==target) { return low; } return -1; } int mid=(low+high)/2; if(nums[mid]==target) { return mid; } //同时在分成的两段里去查找是否有该数字 int index=binarySearch(nums,target,low,mid-1); return index==-1?binarySearch(nums,target,mid+1,high):index; } }

      

    Processed: 0.030, SQL: 8