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);
}
}