0035_Search Insert Position

来源:互联网 发布:轰炸手机号码软件下载 编辑:程序博客网 时间:2024/05/29 09:47

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

Java

方法一

  直接二分查找,若找到即返回下标,若最终未找到,则根据最后找到的数字与target的大小关系返回应该插入的位置。耗时7ms,效率排在9/10。。。。
  看了下效率最高的答案,用的也是二分查找,就是在未找到的情况下没有进一步的判断,而是直接返回left,不明白为什么耗时只有5ms。。

public class Solution {    public int searchInsert(int[] nums, int target) {        if(nums.length == 0){            return 0;        }        int mid = 0;        int left = 0;        int right = nums.length - 1;        while(left <= right){            mid = (left + right) / 2;            if(nums[mid] == target){                return mid;            }else if(nums[mid] > target){                right = mid - 1;            }else{                left = mid + 1;            }        }        if(nums[mid] > target){            return mid;        }else{            return mid + 1;        }    }}
原创粉丝点击