主页 > 电脑硬件  > 

704.二分查找

704.二分查找
1、题目链接

leetcode /problems/binary-search/description/

2、题目描述

704、 二分查找 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 示例 1: 输入: nums = [-1,0,3,5,9,12], target = 9 输出: 4 解释: 9 出现在 nums 中并且下标为 4 示例 2: 输入: nums = [-1,0,3,5,9,12], target = 2 输出: -1 解释: 2 不存在 nums 中因此返回 -1 提示: 你可以假设 nums 中的所有元素是不重复的。 n 将在 [1, 10000]之间。 nums 的每个元素都将在 [-9999, 9999]之间。

3、题解 二分查找算法详解与实现 解题步骤 初始化边界:设定两个指针left和right,分别指向数组的起始位置和结束位置。循环条件:当left小于等于right时,继续搜索。否则,返回-1表示未找到目标值。计算中间点:取left和right的中间值mid,防止溢出可以使用mid = left + (right - left) / 2。比较中间点与目标值: 如果nums[mid]等于目标值target,返回当前mid作为结果。如果nums[mid]小于目标值,说明目标值在右半部分,更新left为mid + 1。如果nums[mid]大于目标值,说明目标值在左半部分,更新right为mid - 1。 返回结果:如果循环结束仍未找到目标值,则返回-1。 实现代码 Java public int search(int[] nums, int target) { int left = 0, right = nums.length - 1; while (left <= right) { int mid = left + (right - left) / 2; if (nums[mid] == target) return mid; else if (nums[mid] < target) left = mid + 1; else right = mid - 1; } return -1; } Python def search(nums, target): left, right = 0, len(nums) - 1 while left <= right: mid = left + (right - left) // 2 if nums[mid] == target: return mid elif nums[mid] < target: left = mid + 1 else: right = mid - 1 return -1 Go func search(nums []int, target int) int { left, right := 0, len(nums) - 1 for left <= right { mid := left + (right - left) / 2 if nums[mid] == target { return mid } else if nums[mid] < target { left = mid + 1 } else { right = mid - 1 } } return -1 } JavaScript function search(nums, target) { let left = 0, right = nums.length - 1; while (left <= right) { const mid = Math.floor(left + (right - left) / 2); if (nums[mid] === target) return mid; else if (nums[mid] < target) left = mid + 1; else right = mid - 1; } return -1; }
标签:

704.二分查找由讯客互联电脑硬件栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“704.二分查找