Welcome to Subscribe On Youtube
Formatted question description: https://leetcode.ca/all/704.html
704. Binary Search (Easy)
Given a sorted (in ascending order) integer array nums
of n
elements and a target
value, write a function to search target
in nums
. If target
exists, then return its index, otherwise return -1
.
Example 1:
Input:nums
= [-1,0,3,5,9,12],target
= 9 Output: 4 Explanation: 9 exists innums
and its index is 4
Example 2:
Input:nums
= [-1,0,3,5,9,12],target
= 2 Output: -1 Explanation: 2 does not exist innums
so return -1
Note:
- You may assume that all elements in
nums
are unique. n
will be in the range[1, 10000]
.- The value of each element in
nums
will be in the range[-9999, 9999]
.
Related Topics:
Binary Search
Similar Questions:
Solution 1.
-
class Solution { public int search(int[] nums, int target) { int low = 0, high = nums.length - 1; while (low <= high) { int mid = (high - low) / 2 + low; int num = nums[mid]; if (num == target) return mid; else if (num > target) high = mid - 1; else low = mid + 1; } return -1; } } ############ class Solution { public int search(int[] nums, int target) { int left = 0, right = nums.length - 1; while (left < right) { int mid = (left + right) >> 1; if (nums[mid] >= target) { right = mid; } else { left = mid + 1; } } return nums[left] == target ? left : -1; } }
-
// OJ: https://leetcode.com/problems/binary-search/ // Time: O(logN) // Space: O(1) class Solution { public: int search(vector<int>& A, int target) { int L = 0, R = A.size() - 1; while (L <= R) { int M = (L + R) / 2; if (A[M] == target) return M; if (A[M] < target) L = M + 1; else R = M - 1; } return -1; } };
-
class Solution: def search(self, nums: List[int], target: int) -> int: left, right = 0, len(nums) - 1 while left < right: mid = (left + right) >> 1 if nums[mid] >= target: right = mid else: left = mid + 1 return left if nums[left] == target else -1 ############ class Solution(object): def search(self, nums, target): """ :type nums: List[int] :type target: int :rtype: int """ try: return nums.index(target) except: return -1
-
func search(nums []int, target int) int { left, right := 0, len(nums)-1 for left < right { mid := (left + right) >> 1 if nums[mid] >= target { right = mid } else { left = mid + 1 } } if nums[left] == target { return left } return -1 }
-
/** * @param {number[]} nums * @param {number} target * @return {number} */ var search = function (nums, target) { let left = 0; let right = nums.length - 1; while (left < right) { const mid = (left + right) >> 1; if (nums[mid] >= target) { right = mid; } else { left = mid + 1; } } return nums[left] == target ? left : -1; };
-
use std::cmp::Ordering; impl Solution { pub fn search(nums: Vec<i32>, target: i32) -> i32 { let mut l = 0; let mut r = nums.len(); while l < r { let mid = l + r >> 1; match nums[mid].cmp(&target) { Ordering::Less => l = mid + 1, Ordering::Greater => r = mid, Ordering::Equal => return mid as i32, } } -1 } }