搜索插入位置
题目
给定一个排序数组和一个目标值,如果在数组中找到目标值则返回索引。如果没有,返回到它将会被按顺序插入的位置。
你可以假设在数组中无重复元素。
样例
[1,3,5,6],5 → 2
[1,3,5,6],2 → 1
[1,3,5,6], 7 → 4
[1,3,5,6],0 → 0
题解
1.简单遍历即可。
public class Solution {
/**
* param A : an integer sorted array
* param target : an integer to be inserted
* return : an integer
*/
public int searchInsert(int[] A, int target) {
for (int i=0;i<A.length;i++)
{
if (A[i] >= target)
{
return i;
}
}
return A.length;
}
}
2.排序数组使用二分法效率更好。
public class Solution {
/**
* param A : an integer sorted array
* param target : an integer to be inserted
* return : an integer
*/
public int searchInsert(int[] A, int target) {
int low = 0;
int high = A.length-1;
while (low <= high)
{
int mid = low + (high - low) / 2;
if (target < A[mid])
{
if (mid == 0 || target > A[mid-1])
{
return mid;
}
high = mid - 1;
}
else if (target > A[mid])
{
if (mid == A.length - 1)
{
return ++mid;
}
low = mid + 1;
}
else
{
return mid;
}
}
return A.length;
}
}
Last Update 2016.8.28
本文介绍了一个简单的算法问题——搜索插入位置。给定一个排序数组和一个目标值,如果找到目标值则返回其索引;若未找到,则返回目标值应该被插入的位置。文章提供了两种解决方案:一种是简单遍历,另一种是利用排序数组特性进行二分查找,提高了查找效率。
&spm=1001.2101.3001.5002&articleId=52348968&d=1&t=3&u=2e0111c39bde412baf38ddb3696b8c7a)
440

被折叠的 条评论
为什么被折叠?



