mirror of
https://github.com/prdlk/leetcode.git
synced 2026-11-02 21:22:43 +00:00
56 lines
1.3 KiB
Plaintext
56 lines
1.3 KiB
Plaintext
---
|
|||
|
|
title: '704. Binary Search'
|
||
|
|
description: 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
|
||
|
|
sidebar:
|
||
|
|
label: 'Binary Search'
|
||
|
|
badge: 'Easy'
|
||
|
|
---
|
||
|
|
|
||
|
|
<Badge variant="accent">Binary Search</Badge>
|
||
|
|
|
||
|
|
::::warning
|
||
|
|
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 <= 10^4`
|
||
|
|
- `-10^4 < nums[i], target < 10^4`
|
||
|
|
- All the integers in `nums` are unique.
|
||
|
|
- `nums` is sorted in ascending order.
|
||
|
|
|
||
|
|
## Solution
|
||
|
|
|
||
|
|
```js
|
||
|
|
/**
|
||
|
|
* @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 + Math.floor((right - left) / 2);
|
||
|
|
if (nums[mid] === target) {
|
||
|
|
return mid;
|
||
|
|
} else if(nums[mid] < target){
|
||
|
|
left = mid + 1;
|
||
|
|
} else if (nums[mid] > target) {
|
||
|
|
right = mid - 1;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return -1;
|
||
|
|
};
|
||
|
|
```
|