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, 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
```
**Example 2:**
```
Input: nums = [-1,0,3,5,9,12], target = 2
Output: -1
```