classSolution{publicint[]searchRange(int[] nums,int target){int left =-1;int right =-1;for(int i =0; i < nums.length; i++){if(nums[i]== target && left ==-1){
left = i;//先确定左边界}elseif(nums[i]== target && left !=-1){
right = i;//再确定右边界}}if(left !=-1&& right ==-1){
right = left;//数组中有且只有一个目标元素}int[] f =newint[]{left,right};return f;}}
69 x的平方根
相当于(2)中的左边界。
classSolution{publicintmySqrt(int x){int left =0;int right = x;//左闭右闭<=while(left <= right){int mid = left +(right - left)/2;//二分if(((long)mid * mid)> x){//long防止溢出
right = mid -1;}elseif(((long)mid * mid)< x){
left = mid +1;}else{return mid;}}return right;}}
367 有效的完全平方数
相当于(2)中第三种情况,判断target是否在数组中。
classSolution{publicbooleanisPerfectSquare(int num){int left =0;int right = num;//左闭右闭<=while(right >= left){int mid = left +(right - left)/2;//二分if(((long)mid * mid)> num){//long防止溢出
right = mid -1;}elseif(((long)mid * mid)< num){
left = mid +1;}else{returntrue;}}returnfalse;}}