LeetCode0704-返回数组中指定元素的下标
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/binary-search
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
参考地址:
https://github.com/youngyangyang04/leetcode-master/blob/master/problems/0704.%E4%BA%8C%E5%88%86%E6%9F%A5%E6%89%BE.md
题目重点:确认边界值,边界值的选取直接影响到了最后的结果
class Solution { // 题目重点:确认好区间边界值 public int search(int[] nums, int target) { int start =0; int end = nums.length-1; int medium = start+ (end - start) /2; if(target>nums[end] || target < nums[start]) return -1; // 高亮部分的边界值直接影响到最后的结果 while(start<=end){ if(nums[medium]==target) return medium; else if(nums[medium] < target) { start= medium+1; }else{ end = medium-1; } medium = start+ (end - start)/2; } return -1; } }
类似题目:https://leetcode-cn.com/problems/sqrtx/submissions/ 二分法求平方根
约简单的题目边界值越坑哦
class Solution { public int mySqrt(int x) { int start =0,end =x,medium=0,ans =0; while(start <= end){ medium=start+(end-start)/2; if(Math.pow(medium,2)> x){ end = medium -1; }else if(Math.pow(medium,2)<=x){ ans=medium; start = medium +1; } } return ans; } }