35. Search Insert Position(第九周)
2017-04-23 19:23
267 查看
方法一:
class Solution
{
public:
int searchInsert(vector<int>& nums, int target)
{
for(int i = 0;i < nums.size();i++)
{
if(target <= nums[i]) return i;
}
return nums.size();
}
};
这是一种很简单很笨的实现方法,因为是顺序排列,从前往后依次寻找,如果vector中元素大于等于target,则返回该元素的下标;否则,则说明target大于vector中的所有元素,返回vector中元素的个数即为target插入后的下标。
方法二:
class Solution
{
public:
int searchInsert(vector<int>& nums, int target)
{
int l=0,r=nums.size()-1,mid;
while(l<=r)
{
mid=(l+r)/2;
if(nums[mid] == target) return mid;
else if(nums[mid] > target) r = mid-1;
else if(nums[mid] < target) l = mid+1;
}
return l;
}
};
使用二分查找,可以使得时间复杂度降低,每次找出中间位置的元素,与目标元素进行比较,如果相等则返回,如果中间元素大于目标元素,则将mid-1作为r的值;如果中间元素小于目标元素,则将mid+1作为l的值;如果目标元素大于vector中的所有元素,则直接返回l的值,此时l的值正好是插入后target的下标,r则是target下标减一。
class Solution
{
public:
int searchInsert(vector<int>& nums, int target)
{
for(int i = 0;i < nums.size();i++)
{
if(target <= nums[i]) return i;
}
return nums.size();
}
};
这是一种很简单很笨的实现方法,因为是顺序排列,从前往后依次寻找,如果vector中元素大于等于target,则返回该元素的下标;否则,则说明target大于vector中的所有元素,返回vector中元素的个数即为target插入后的下标。
方法二:
class Solution
{
public:
int searchInsert(vector<int>& nums, int target)
{
int l=0,r=nums.size()-1,mid;
while(l<=r)
{
mid=(l+r)/2;
if(nums[mid] == target) return mid;
else if(nums[mid] > target) r = mid-1;
else if(nums[mid] < target) l = mid+1;
}
return l;
}
};
使用二分查找,可以使得时间复杂度降低,每次找出中间位置的元素,与目标元素进行比较,如果相等则返回,如果中间元素大于目标元素,则将mid-1作为r的值;如果中间元素小于目标元素,则将mid+1作为l的值;如果目标元素大于vector中的所有元素,则直接返回l的值,此时l的值正好是插入后target的下标,r则是target下标减一。
相关文章推荐
- LeetCode - 35. Search Insert Position
- 35. Search Insert Position
- leetcode - 35.Search Insert Position
- 35. Search Insert Position
- 35. Search Insert Position
- 2018.04.02 leeycode 打卡 #35 . Search Insert Position
- leetcode 35 Search Insert Position(二分法)
- 35. Search Insert Position
- LeetCode (35)Search Insert Position
- LeetCode - 35. Search Insert Position
- [leetcode-查找]--35. Search Insert Position
- LeetCode 35 Search Insert Position 二分法处理
- [LeetCode 35] Search Insert Position Solution
- [Leetcode] 35 - Search Insert Position
- LeetCode 35: Search Insert Position
- 35. Search Insert Position
- leetcode35. Search Insert Position
- LeetCode 35 Search Insert Position(查找插入位置)
- LeetCode 35 Search Insert Position
- LeetCode 35 Search Insert Position