14二分查找

1 注意比较的时候比较的是值还是下标
2 startIndex>=endIndex,第一次写成了<=
3 数组中有多个重复值得时候怎么办,写进一个list里

class Solution {
    /**
     * @param nums: The integer array.
     * @param target: Target to find.
     * @return: The first position of target. Position starts from 0.
     */
    public int binarySearch(int[] nums, int target) {
        //write your code here
        if(nums==null||nums.length==0||target<nums[0]||target>nums[nums.length-1]){
            return -1;
        }
        int startIndex=0;
        int endIndex=nums.length-1;
        int middleIndex;
        ArrayList indexList=new ArrayList();
        while(true){
            middleIndex=(startIndex+endIndex)/2;
            if(nums[middleIndex]==target){
                indexList.add(middleIndex);
            }
            if(startIndex>=endIndex){
                if(indexList.size()==0)
                    return -1;
                else
                    return (int)indexList.get(indexList.size()-1);
            }else{
                if(target<=nums[middleIndex]){
                    endIndex=middleIndex-1;
                }else{
                    startIndex=middleIndex+1;
                }
            }
        }
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 题目 描述 给定一个排序的整数数组(升序)和一个要查找的整数target,用O(logn)的时间查找到target...
    悠扬前奏阅读 1,501评论 0 0
  • 描述 给定一个排序的整数数组(升序)和一个要查找的整数target,用O(logn)的时间查找到target,第一...
    6默默Welsh阅读 1,729评论 0 0
  • 给定一个排序的整数数组(升序)和一个要查找的整数target,用O(logn)的时间查找到target第一次出现的...
    和蔼的zhxing阅读 2,472评论 0 0
  • 53.计算字符 在字符串中获取字符值的数量, 可以使用字符串字符属性中的计数属性: let unusualMena...
    无沣阅读 4,836评论 0 4
  • 这一周每天都在开会,开会,开会,就是觉得好累好累好累(´;︵;`) 突然觉得自己想要的安定的生活没了,...
    开心就好哈哈哈啦啦啦阅读 793评论 0 0