题解 | 二分查找-I
二分查找-I
https://www.nowcoder.com/practice/d3df40bd23594118b57554129cadf47b?tpId=295&tqId=1499549&sourceUrl=%2Fexam%2Foj%3FquestionJobId%3D10%26subTabName%3Donline_coding_page
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型一维数组 * @param target int整型 * @return int整型 */ public int search (int[] nums, int target) { // write code here //二分的开区间写法 int left = -1; int len = nums.length; int right = len ; while(left + 1 < right){ int mid = left + (right - left) /2; if(nums[mid] < target){ left = mid; }else if(nums[mid] == target){//判断下标mid处值,找到直接返回 return mid; } else { right = mid; } } if(right == 0 || right == len || nums[right] != target){ //结束时候,right位置的三种情况: //1.所有元素都大于target,在最左边=0处 //2.所有都小于target,在最右边length处 //3.位置在数组内但是不等于target return -1; } else{ return right; } } }