Search Insert Position

Given a sorted array and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order.

You may assume no duplicates in the array.

Here are few examples.
[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 SeachPosition {    
    public static  int searchInsert(int[] nums, int target) {
        int length = nums.length;
        //判断target这个元素是否存在数组中,若存在则返回其下标位置
        for(int i = 0 ;i < length; i++){
            if(nums[i] == target){
                return i;
            }
        }
        //新建一个数组,用来做加入target的容器
        int[] num = new int[length+1];
        for(int i = 0;i < length;i++){
            num[i]= nums[i];
        }
        num[length] = target;
        //对新数组进行排序
        Arrays.sort(num);
        //获取排序后的target的下标
        for(int i = 0; i< length+1; i++){
            if(num[i]== target){
                return i;
            }
        }
        return 0;
    }
    public static void main(String[] args) {
        int[] nums={1,3,4,7};
        int target = 2;
        int result = searchInsert(nums, target);
        System.out.println(result);
    }

}

使用折半查找果然快了很多,我又傻逼了

 public static int searchInsert(int[] nums, int target) {
       int length = nums.length-1;
        int i = 0;
        while(i<=length){
            int mid = (int)((i+length)/2);
            if(target == nums[mid]){
                return mid;
            }else if(target > nums[mid]){
                i = mid +1;
            }else{
                length = mid - 1;
            }
        }
        return i;
    }
阅读更多
个人分类: java-刷题
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

Search Insert Position

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭