leetcode——33.搜索旋转排序数组

 

 
                                   ——2019.10.8

我太蠢了,当时并不知道什么是logn级别,就暴力瞎写,啥也不懂,十分尴尬。
 
 
二分法,确定边界
public int search(int[] nums, int target) {  //未知位置发生旋转,如何确定是哪个位置发生的?
        //二分法如何使用,如何判断边界?
        int first = 0,last = nums.length;
        while(first != last){
            int mid = first +(last-first)/2;
            if(nums[mid] == target){
                return mid;
            }
            if(nums[first]<nums[mid]){
                if(nums[first] <= target  && target<=nums[mid]){
                    last = mid;
                }else{
                    first = mid+1;
                }
            }else{
                if(nums[mid] <= target && target <= nums[last-1]){
                    first = mid+1;
                }else{
                    last = mid;
                }
            }
        }
        return -1;
    }

 

 

——2020.7.8

 
 
 
posted @ 2019-10-08 17:05  欣姐姐  阅读(139)  评论(0编辑  收藏  举报