# BinarySearch704 ###### tags: `leetcode`,`binarySearch`,`easy` **BinarySearch704** >ref: https://leetcode.com/problems/binary-search/ > Given an array of integers nums which is sorted in ascending order, and an integer target, write a function to search target in nums. If target exists, then return its index. Otherwise, return -1. You must write an algorithm with O(log n) runtime complexity. >Example 1: Input: nums = [-1,0,3,5,9,12], target = 9 Output: 4 Explanation: 9 exists in nums and its index is 4 >Example 2: Input: nums = [-1,0,3,5,9,12], target = 2 Output: -1 Explanation: 2 does not exist in nums so return -1 >Constraints: 1 <= nums.length <= 104 -104 < nums[i], target < 104 All the integers in nums are unique. nums is sorted in ascending order. >1.timeResolution:O(log N)故需要對半拆 >2. looping過程中start 會一直推進,當start跟end差一時會檢驗的是start,收斂到 start==end時需進行最後檢驗 ```java= public int search(int[] nums, int target) { int len = nums.length; int start = 0; int end = len - 1; while (start <= end) { int med = start + (end - start) / 2; //收斂時檢驗 if (start == end && nums[med] != target) { break; } if (nums[med] > target) { end = med; } else if (nums[med] < target) { start = med + 1; } else { return med; } } return -1; } ```