public class Solution {
public int SearchInsert(int[] nums, int target)
{
var l = 0;
var r = nums.Length - 1;
while(l < r - 1){
var m = (l + r) / 2;
var i = GetEqualsIndex(target, nums, new[]{l,r,m});
if(i != -1){
return i;
}
if(target > nums[m]){
l = m;
}
else{
r = m;
}
}
var index = GetEqualsIndex(target, nums, new[]{l,r});
if(index != -1){
return index;
}
if(target < nums[l]){
return l > 0 ? l - 1 : 0;
}
else if(target > nums[r]){
return r + 1;
}
else{
return l + 1;
}
}
private int GetEqualsIndex(int target, int[] nums, int[] indexes)
{
foreach(var i in indexes){
if(nums[i] == target){
return i;
}
}
return -1;
}
}版权声明:本文为博主原创文章,未经博主允许不得转载。
LeetCode -- Search Insert Position
原文:http://blog.csdn.net/lan_liang/article/details/49704131