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

    Search in Rotated Sorted Array

    Suppose a sorted array is rotated at some pivot unknown to you beforehand.

    (i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).

    You are given a target value to search. If found in the array return its index, otherwise return -1.

    You may assume no duplicate exists in the array.

    A[mid] >= A[left] 说明 mid 左边已经排序好了;

    else 右边已经排序好了

    然后 根据 A[mid] 和 target的大小比较 二分搜索

    public class Solution {
        public int search(int[] A, int target) {
          int len = A.length;
              
              // binary search
              int l = 0;
              int r = len -1;
              
              while(l <= r){
                  int m = (l+r)/2;
                  if(target == A[m]){
                      return m;
                  }
                  
                  if(A[m] >= A[l]){ // lower is sorted ** do not forget "="
                      if(target >= A[l] && target < A[m]){  // 注意这边的等号 左边要包含等号
                          r = m-1;
                      }else{
                          l = m+1;
                      }
                  } else { // higher is sorted
                      if(target > A[m] && target <= A[r]){ // 注意这边的等号 右边要包含等号
                          l = m+1;
                      }else {
                          r = m-1;
                      }
                  }
              }
              return -1;
        }
    }
  • 相关阅读:
    实战演练:通过伪列、虚拟列实现SQL优化
    python try else
    Prince2是怎么考试的?
    Prince2是怎么考试的?
    Prince2是怎么考试的?
    Prince2是怎么考试的?
    拦截器
    拦截器
    拦截器
    拦截器
  • 原文地址:https://www.cnblogs.com/RazerLu/p/3532602.html
Copyright © 2011-2022 走看看