LeetCode 35. Search Insert Position(搜索插入点)

来源:互联网 发布:杭州程序员招聘 编辑:程序博客网 时间:2024/05/21 15:38

原题网址:https://leetcode.com/problems/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.

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

方法:二分法查找。

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


二分法查找其实i<=j或者i<j作为条件都是可以的,不过前者用得比较顺。

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



0 0