zoukankan      html  css  js  c++  java
  • 【leetcode】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.

     
     
    利用二分法,
    如果left<A[mid],说明从左边left开始到mid是有序的
     
    如果left>A[mid],说明右边从mid开始,到right是有序的
     
    如果left=A[mid],则说明left和mid在同一个位置,如果A[mid]!=target则下一步中left=left+1;
     
     1 class Solution {
     2 public:
     3     int search(int A[], int n, int target) {
     4        
     5         int left=0;
     6         int right=n-1;
     7         int mid;
     8         while(left<=right)
     9         {
    10             mid=(left+right)/2;
    11            
    12             if(A[mid]==target) return mid;
    13            
    14             if(A[left]<A[mid])//left
    15             {
    16                 if(A[left]<=target&&target<A[mid])
    17                 {
    18                     right=mid-1;
    19                 }
    20                 else
    21                 {
    22                     left=mid+1;
    23                 }
    24             }
    25             else if(A[left]>A[mid])//right
    26             {
    27                 if(A[mid]<target&&target<=A[right])
    28                 {
    29                     left=mid+1;
    30                 }
    31                 else
    32                 {
    33                     right=mid-1;
    34                 }
    35             }
    36             else
    37             {
    38                 //最后一个判断语句可以一起放到第一个语句里,if(A[left]<=A[mid])
    39                 left=mid+1;
    40             }
    41            
    42         }
    43         return -1;
    44     }
    45 };
  • 相关阅读:
    Day12 文件操作
    Day11 集合、集合操作
    Day10 【小程序】商城管理(购物车小程序的增强版)
    Day8 字符串操作
    Day9 字典操作
    文件操作
    【python练习】购物车程序
    2296 寻找道路
    2661 信息传递(tarjan&拓扑)
    【模板】LCA(tarjan)
  • 原文地址:https://www.cnblogs.com/reachteam/p/4176009.html
Copyright © 2011-2022 走看看