首页IT科技二分查找算法思路(二分查找-力扣(Java))

二分查找算法思路(二分查找-力扣(Java))

时间2025-04-30 20:21:19分类IT科技浏览3736
导读:题目描述 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。...

题目描述

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

来源:力扣(LeetCode)

链接:https://leetcode.cn/problems/binary-search

著作权归领扣网络所有                 。商业转载请联系官方授权           ,非商业转载请注明出处      。

简要描述二分法

首先应为一个有序数列                  ,我们将会数字设定为一个数组nums      ,将要在数组中寻找的目标设置为target      。在数组中     ,对数组中间值nums[middle]与target进行判断                  ,并对其进行空间的压缩            ,然后再次判断新的nums[middle]与target的大小关系     ,直到nums[middle]与target相等为止

思路

首先明确题目要求                 ,为寻找目标值            ,若存在返回下标,不存在则返回-1                 ,标准的二分查找 明确了二分查找要求后                  ,确定使用左闭右闭还是左闭合又开,即选择[left,right]还是[left,right)           ,这里我选择的是左闭右闭 确定了使用左闭右闭写法之后                  ,便应该明确怎么写代码                 。由于目标值在[left,right]区间      ,所以while(left ? right)中?处应填写<= ,因为在[left,right]区间中,left == right是存在的           ,例[1,1]                  ,所以应当使用<= 同时判断语句if (nums[middle] > target) 时,由于middle大于目标值      ,所以即目标值出现在左半边     ,所以应当将right(即右边界)赋值为middle - 1                  ,因为判断条件为if (nums[middle] > target)            ,此时的nums[middle] 必然不是目标值     ,所以可以自然往左一位 而判断语句if (nums[middle] < target)时                 ,由于middle小于目标值            ,所以即目标值出现在右半边,所以应当将left(即左边界)赋值为middle + 1                 ,原因参考上一点 当nums[middle] = tarage 时                  ,直接return middle输出结果即可 最后在while循环外写入return -1表示目标值不存在即可

代码

class Solution { public int search(int[] nums, int target) { int left = 0 ; int right = nums.length -1; while(left <= right){ int middle = left + (right - left) / 2; if(nums[middle] > target) right = middle -1; else if(nums[middle] < target) left = middle + 1; else if(nums[middle] == target) return middle; } return -1; } }

提交截图

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
how to use the internet safely作文(How to use Fiddler and HTTP replay to have an offline copy of your site) 批量生成工具的快捷键是哪个(用chatgpt批量生成SEO文章-站长必备chatgpt文章生成)