60搜索插入位置

给定一个排序数组和一个目标值,如果在数组中找到目标值则返回索引。如果没有,返回到它将会被按顺序插入的位置。
你可以假设在数组中无重复元素。

[1,3,5,6],5 → 2
[1,3,5,6],2 → 1
[1,3,5,6], 7 → 4
[1,3,5,6],0 → 0
public class Solution {
    /*
     * @param A: an integer sorted array
     * @param target: an integer to be inserted
     * @return: An integer
     */
    public int searchInsert(int[] A, int target) {
        // write your code here
        if(A==null){
            return -1;
        }
        if(A.length==0||A[0]>target){
            return 0;
        }
        if(A[A.length-1]<target){
            return A.length;
        }
        int startIndex=0;
        int endIndex=A.length-1;
        int middleIndex;
        while(true){
            middleIndex=(startIndex+endIndex)/2;
            if(A[middleIndex]==target){
                return middleIndex;
            }
            //最后肯定是剩两个数,这两个数左边的都比target小,右边的都比target大
            if(startIndex>=endIndex){
                if(target>A[startIndex]){
                    return startIndex+1;
                }
                else{
                    return startIndex;
                }
            }else{
                if(target>A[middleIndex]){
                    startIndex=middleIndex+1;
                }else{
                    endIndex=middleIndex-1;
                }
            }
        }
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 题目 描述 实现一个带有取最小值min方法的栈,min方法将返回当前栈中的最小值。 你实现的栈将支持push,po...
    悠扬前奏阅读 291评论 0 0
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,099评论 19 139
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,275评论 0 4
  • 来源:NumPy Tutorial - TutorialsPoint 译者:飞龙 协议:CC BY-NC-SA 4...
    布客飞龙阅读 33,116评论 6 98
  • 1语文杂文输出 2.语文空空本默写
    e70eb7933654阅读 180评论 0 0