您的位置:首页 > 其它

笔试题48. LeetCode OJ (35)

2016-05-06 14:00 281 查看


这个题目还是属于查找类的题目,和前面的题目比较类似,题目的要求是给定一个target,在有序数组里面查找该元素的插入顺序,若存在了则返回该元素的下标。这道题比较直观,所以比较容易动手,需要注意到的应该就是边界条件的问题吧,比如说:

(1). 目标元素比排序数组中的最小元素还小

(2). 目标元素比排序数组中的最大元素还大

请看代码吧,代码写的还是比较清晰的

class Solution {
public:
int searchInsert(vector<int>& nums, int target)
{
int len = nums.size();
if (len == 0)
{
return 0;
}

int left = 0;
int right = len - 1;
int mid = 0;
if (target > nums[right])
{
return right + 1;
}

while (left < right)
{
mid = left + (right - left) / 2;
if (nums[left] == target)
{
return left;
}
if (nums[right] == target)
{
return right;
}
if (nums[mid] == target)
{
return mid;
}

if (nums[mid] > target)
{
right = mid;
}
else
{
left = mid + 1;
}
}

return left;
}
};

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: