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

    Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand.

    (i.e., [0,0,1,2,2,5,6] might become [2,5,6,0,0,1,2]).

    You are given a target value to search. If found in the array return true, otherwise return false.

    Example 1:

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

    Example 2:

    Input: nums = [2,5,6,0,0,1,2], target = 3
    Output: false

    与上一题相比,有重复的, 程序第10行加一个判断即可。
     1 class Solution {
     2     public boolean search(int[] a, int target) {
     3         int n = a.length;
     4         int lo = 0;
     5         int hi = n - 1;
     6         while(lo<=hi){
     7             int mid = lo+(hi-lo)/2;
     8             if(a[mid]== target)
     9                 return true;
    10             if(a[lo]==a[mid]) lo++;//越过相等的点
    11             
    12             else if(a[lo]<a[mid]){//左半边有序
    13                 if(a[lo]<=target && target<=a[mid])//目标值在左半边
    14                     hi = mid - 1;
    15                 else
    16                     lo = mid + 1; 
    17             }
    18             
    19             else{//右半边有序
    20                 if(a[mid]<=target && target<=a[hi])
    21                     lo = mid + 1;
    22                 else
    23                     hi = mid - 1;
    24             }
    25         }
    26         return false;  
    27         
    28     }
    29 }
  • 相关阅读:
    线性表
    文件IO其四 图片显示
    文件IO其三 目录操作
    文件IO其二 文件IO
    文件IO其一 标准IO
    字符串处理函数
    复杂类型及编译相关
    linux内存分析
    构建根文件系统3-完善根文件系统
    构建根文件系统3-构建最小根文件系统
  • 原文地址:https://www.cnblogs.com/zle1992/p/8996267.html
Copyright © 2011-2022 走看看