35. Search Insert Position

来源:互联网 发布:什么是淘宝小号和大号 编辑:程序博客网 时间:2024/06/07 23:49

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;int j = nums.length-1;while(i<=j){    int middle = (i+j)/2;if(target==nums[middle])return middle;else if(target>nums[middle])i = middle+1;elsej = middle-1;}    return i;    }}


原创粉丝点击