标签:
这个题目还是属于查找类的题目,和前面的题目比较类似,题目的要求是给定一个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; } };
标签:
原文地址:http://blog.csdn.net/zr1076311296/article/details/51331089