题目:704.二分查找 初始代码 class Solution { public int search(int[] nums, int target) { } } 解题思路 假设target是在一个左闭右开的区间内[left,right],其中right = nums.length因为是左闭右开,所以while(left < right)取一个中间值mid,mid = (left + right) >> 1,将nums[mid]与target进行比较,判断mid属于哪一边区间if (nums[mid] > target)则将right更新为mid,因为是左闭右开区间,后面不会再对nums[mid]进行比较如果是if (nums[mid] < target则将left更新为mid + 1,因为当前的nums[mid]已经比较过了,需要往右移一位 代码 class Solution { public int search(int[] nums, int target) { int l = 0, r = nums.length; while (l < r) { int mid = l + r >> 1; if (nums[mid] < target) { l = mid + 1; } else if (nums[mid] > target) { r = mid; } else { return mid; } } return -1; } }