sweet1cris

Untitled

Jan 9th, 2018
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.81 KB | None | 0 0
  1. // version 1: with jiuzhang template
  2. class Solution {
  3.     /**
  4.      * @param nums: The integer array.
  5.      * @param target: Target to find.
  6.      * @return: The first position of target. Position starts from 0.
  7.      */
  8.     public int binarySearch(int[] nums, int target) {
  9.         if (nums == null || nums.length == 0) {
  10.             return -1;
  11.         }
  12.        
  13.         int start = 0, end = nums.length - 1;
  14.         while (start + 1 < end) {
  15.             int mid = start + (end - start) / 2;
  16.             if (nums[mid] == target) {
  17.                 end = mid;
  18.             } else if (nums[mid] < target) {
  19.                 start = mid;
  20.                 // or start = mid + 1
  21.             } else {
  22.                 end = mid;
  23.                 // or end = mid - 1
  24.             }
  25.         }
  26.        
  27.         if (nums[start] == target) {
  28.             return start;
  29.         }
  30.         if (nums[end] == target) {
  31.             return end;
  32.         }
  33.         return -1;
  34.     }
  35. }
  36.  
  37.  
  38. // version 2: without jiuzhang template
  39. class Solution {
  40.     /**
  41.      * @param nums: The integer array.
  42.      * @param target: Target to find.
  43.      * @return: The first position of target. Position starts from 0.
  44.      */
  45.     public int binarySearch(int[] nums, int target) {
  46.         if (nums == null || nums.length == 0) {
  47.             return -1;
  48.         }
  49.        
  50.         int start = 0, end = nums.length - 1;
  51.         while (start < end) {
  52.             int mid = start + (end - start) / 2;
  53.             if (nums[mid] == target) {
  54.                 end = mid;
  55.             } else if (nums[mid] < target) {
  56.                 start = mid + 1;
  57.             } else {
  58.                 end = mid - 1;
  59.             }
  60.         }
  61.        
  62.         if (nums[start] == target) {
  63.             return start;
  64.         }
  65.        
  66.         return -1;
  67.     }
  68. }
Advertisement
Add Comment
Please, Sign In to add comment