[leetcode][35] Search Insert Position

Posted ekoeko

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[leetcode][35] Search Insert Position相关的知识,希望对你有一定的参考价值。

35 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.

Example 1:

Input: [1,3,5,6], 5
Output: 2

Example 2:

Input: [1,3,5,6], 2
Output: 1

Example 3:

Input: [1,3,5,6], 7
Output: 4

Example 4:

Input: [1,3,5,6], 0
Output: 0

解析:

就是二分查找,关键点是要找到插入位置。也就是不小于目标值的最大位置。

参考答案(很简单,自己写的):

class Solution {
    public int searchInsert(int[] nums, int target) {
        int low = 0;
        int hi = nums.length - 1;
        while (low <= hi) {
            int mid = (low + hi)/2;
            if (target < nums[mid]) {
                hi = mid-1;
            } else if (target > nums[mid]) {
                low = mid+1;
            } else {
                return mid;
            }
        }

        return low;
    }
}

关键点是循环的判断要是<=,在low和hi相等时还会再执行一遍循环体,如果nums[low]小于目标值就会low++,否则low不变,返回low就是插入位置。

以上是关于[leetcode][35] Search Insert Position的主要内容,如果未能解决你的问题,请参考以下文章

[leetcode]Binary Search-35. Search Insert Position

LeetCode 35. Search Insert Position

[Binary Search] Leetcode 35, 74

LeetCode OJ 35. Search Insert Position

[LeetCode]35. Search Insert Position

Leetcode-35 Search Insert Position