[Leetcode] 35. Search Insert Position 搜索插入位置

Related Topics:[Array][Binary Search]
Similar Questions:[First Bad Version]

题目: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

思路

思路1:遍历一遍原数组,若当前数字大于或等于目标值,则返回当前坐标,如果遍历结束了,说明目标值比数组中任何一个数都要大,则返回数组长度n即可;
java解法1:

class Solution {
    public int searchInsert(int[] nums, int target) {
        //遍历法
        for(int i=0;i<nums.length;i++) {
            if(nums[i]>=target) return i;
        }
        return nums.length;
    }
}

思路2:我们还可以用二分搜索法来优化我们的时间复杂度,
java解法2:

class Solution {
    public int searchInsert(int[] nums, int target) {
        //二分法
        int left=0,right=nums.length-1;
       //此处有=,则返回left;此处无=,返回right,且要判断数组最后一位与target的大小
        while(left<=right) {
            int mid=(left+right)/2;
            if(nums[mid]==target) {
                return mid;
            }else if(nums[mid]>target) {
                right=mid-1;
            }else {
                left=mid+1;
            }
        }
        return left;
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,769评论 0 33
  • leetcode刷题记录本文记录一下leetcode刷题记录,记录一下自己的解法和心得。 LeetCode Two...
    EarthChen阅读 3,504评论 0 6
  • 33. Search in Rotated Sorted Array这道题我做了不止一次,附上几次的代码: (2)...
    __小赤佬__阅读 464评论 0 0
  • 清晨,窗外叽叽喳喳的鸟鸣声把我从沉沉的睡眠中唤醒,已经四点有多。看着熟睡中的一双儿女,心中莫名的涌起一阵阵富足的暖...
    曰日如歌阅读 344评论 2 5