题解 | #二分查找-II#

二分查找-II

http://www.nowcoder.com/practice/4f470d1d3b734f8aaf2afb014185b395

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 如果目标值存在返回下标,否则返回 -1
     * @param nums int整型一维数组 
     * @param target int整型 
     * @return int整型
     */
  //对于符合返回条件的分类讨论
    public int search (int[] nums, int target) {
        // write code here
int start = 0;
		int end = nums.length-1;
        while(start<=end) {
          //发现很多人对于折半喜欢这样写start+(end-start)/2,一开始没看懂...,后面发现其实就是折半,直接(end+start)/2不是更清晰?
        	int mid = (end+start)>>1;
        	if((target==nums[mid]&&mid==0)||(target==nums[mid]&&nums[mid]>nums[mid-1])) {
        		return mid;
        	}
        	else if(target<=nums[mid]) {
        		end = mid-1;
        	}else {
        		start = mid+1;
        	}
        }
    	return -1;
    }
   
}
全部评论

相关推荐

美团 后端开发 总包n(15%是股票)
点赞 评论 收藏
分享
我已成为0offer的糕手:别惯着,胆子都是练出来的,这里认怂了,那以后被裁应届被拖工资还敢抗争?
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务