码迷,mamicode.com
首页 > 其他好文 > 详细

[leetcode][35] Search Insert Position

时间:2018-09-05 23:56:52      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:class   dup   参考答案   关键点   while   code   solution   inpu   input   

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

标签:class   dup   参考答案   关键点   while   code   solution   inpu   input   

原文地址:https://www.cnblogs.com/ekoeko/p/9594583.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!