Advertisement
sweet1cris

Untitled

Jan 9th, 2018
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.08 KB | None | 0 0
  1. public class Solution {
  2.     public int search(int[] A, int target) {
  3.         if (A == null || A.length == 0) {
  4.             return -1;
  5.         }
  6.  
  7.         int start = 0;
  8.         int end = A.length - 1;
  9.         int mid;
  10.        
  11.         while (start + 1 < end) {
  12.             mid = start + (end - start) / 2;
  13.             if (A[mid] == target) {
  14.                 return mid;
  15.             }
  16.             if (A[start] < A[mid]) {
  17.                 // situation 1, red line
  18.                 if (A[start] <= target && target <= A[mid]) {
  19.                     end = mid;
  20.                 } else {
  21.                     start = mid;
  22.                 }
  23.             } else {
  24.                 // situation 2, green line
  25.                 if (A[mid] <= target && target <= A[end]) {
  26.                     start = mid;
  27.                 } else {
  28.                     end = mid;
  29.                 }
  30.             }
  31.         } // while
  32.        
  33.         if (A[start] == target) {
  34.             return start;
  35.         }
  36.         if (A[end] == target) {
  37.             return end;
  38.         }
  39.         return -1;
  40.     }
  41. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement