E 1521694570 tags: Binary Search #### Binary Search Template - while: start + 1 < end - mid = start + (end - start) / 2; - 根据mid作比较 - 末尾double check start, end. ``` /* Find any position of a target number in a sorted array. Return -1 if target does not exist. Example Given [1, 2, 2, 4, 5, 5]. For target = 2, return 1 or 2. For target = 5, return 4 or 5. For target = 6, return -1. Challenge O(logn) time Tags Expand Binary Search */ /* Thoughts: classic start,mid,end */ public class Solution { public int findPosition(int[] nums, int target) { if (nums == null || nums.length == 0) { return -1; } int start = 0; int end = nums.length - 1; while (start + 1 < end) { int mid = start + ((end - start) >> 1); if (nums[mid] == target) { return mid; } else if (nums[mid] < target) { start = mid; } else { end = mid; } } if (nums[start] == target) { return start; } if (nums[end] == target) { return end; } return -1; } } ```