1. 程式人生 > >[leetcode][35] Search Insert Position

[leetcode][35] Search Insert Position

class lee leet public arch tput 找到 位置 target

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