Question:

给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。

示例 1:

  1. 输入: nums = [-1,0,3,5,9,12], target = 9
  2. 输出: 4
  3. 解释: 9 出现在 nums 中并且下标为 4

示例 2:

  1. 输入: nums = [-1,0,3,5,9,12], target = 2
  2. 输出: -1
  3. 解释: 2 不存在 nums 中因此返回 -1

提示:

  1. 你可以假设 nums 中的所有元素是不重复的。
  2. n 将在 [1, 10000]之间。
  3. nums 的每个元素都将在 [-9999, 9999]之间

Solution:

  1. /**
  2. * @param {number[]} nums
  3. * @param {number} target
  4. * @return {number}
  5. */
  6. var search = function(nums, target) {
  7. let left = 0;
  8. let right = nums.length -1;
  9. while (left <= right) {
  10. const midIndex = left + Math.floor((right-left/2));
  11. if( nums[midIndex] === target) {
  12. return midIndex
  13. } else if( nums[midIndex] > target) {
  14. right = midIndex -1;
  15. } else if( nums[midIndex] < target){
  16. left = midIndex + 1
  17. }
  18. }
  19. return -1
  20. };

image.png
参考资料:二分查找