## Algorithm

Problem Name: 704. 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.

## Code Examples

### #1 Code Example with Java Programming

```Code - Java Programming```

``````
class Solution {
public int search(int[] nums, int target) {
int start = 0;
int end = nums.length - 1;
while (start  < = end) {
int mid = (start + end) / 2;
if (nums[mid] == target) {
return mid;
} else if (nums[mid]  <  target) {
start = mid + 1;
} else {
end = mid - 1;
}
}
return -1;
}
}
``````
Copy The Code &

Input

cmd
nums = [-1,0,3,5,9,12], target = 9

Output

cmd
4

### #2 Code Example with Javascript Programming

```Code - Javascript Programming```

``````
const search = function(nums, target) {
let start = 0;
let end = nums.length - 1;

while(start  < = end){
let mid = parseInt((start + end) / 2);
if(nums[mid] === target) return mid;
if(nums[mid] > target) end = mid -1;
if(nums[mid] < target> start = mid + 1;
}
return -1;
};
``````
Copy The Code &

Input

cmd
nums = [-1,0,3,5,9,12], target = 9

Output

cmd
4

### #3 Code Example with Python Programming

```Code - Python Programming```

``````
class Solution:
def search(self, nums: List[int], target: int) -> int:
return bisect.bisect_left(nums, target) if target in nums else -1
``````
Copy The Code &

Input

cmd
nums = [-1,0,3,5,9,12], target = 2

### #4 Code Example with C# Programming

```Code - C# Programming```

``````
namespace LeetCode
{
public class _0704_BinarySearch
{
public int Search(int[] nums, int target)
{
int lo = 0, hi = nums.Length - 1;

while (lo  < = hi)
{
var mid = lo + (hi - lo) / 2;
if (nums[mid] == target) return mid;
else if (nums[mid] > target) hi = mid - 1;
else lo = mid + 1;
}

return -1;
}
}
}
``````
Copy The Code &

Input

cmd
nums = [-1,0,3,5,9,12], target = 2

Output

cmd
-1