Leetcode35. Search Insert Position

来源:互联网 发布:网络电信诈骗嫌犯 编辑:程序博客网 时间:2024/05/23 02:07

题目描述:

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[] A, int target) {            // write your code here            if (A == null || A.length == 0) {                return 0;            }            int start = 0;            int end = A.length - 1;            while (start + 1 < end) {                int mid = start + (end - start) / 2;                if (A[mid] == target) {                    return mid;                } else if (A[mid] < target) {                    start = mid;                } else {                    end = mid;                }            }            if (A[start] >= target) {                return start;            } else if (A[end] >= target) {                return end;            } else {                return end + 1;            }        }    }   

需要我们考虑的是如果,我们没有假定,在这个数组中的元素不是唯一存在的时候我们应该怎么办。

0 0
原创粉丝点击