Leetcode: Binary Search

This is so trivial. I just put it here so I can look up faster.

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.


Working code in C#

public class Solution {
public int Search(int[] nums, int target) {
return Search(nums, target, 0, nums.Length - 1);
}

public int Search(int[] nums, int target, int start, int end)
{
if (start > end) return -1;

var mid = (int)((end - start) / 2) + start;
var midNum = nums[mid];

if (midNum == target)
return mid;

if (target < midNum)
return Search(nums, target, start, mid - 1);

return Search(nums, target, mid + 1, end);
}
}