leetcode——Search Insert Position
2016-06-15 23:11
363 查看
题目:
Given a sorted array and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order.
You may assume no duplicates in the array.
Here are few examples.
Given a sorted array and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order.
You may assume no duplicates in the array.
Here are few examples.
[1,3,5,6], 5 → 2
[1,3,5,6], 2 → 1
[1,3,5,6], 7 → 4
[1,3,5,6], 0 → 0
class Solution { public: int searchInsert(vector<int>& nums, int target) { if (nums.empty()) { return 0; } /*找到第一个大于等于target的位置,那么可能需要比较first和first-1的位置 因此,让first从1开始比较合理 */ if (nums[0] >= target) { return 0; } //先比较最后一个元素,这样让last从nums.size()开始,防止越界 int first = 1, last = nums.size(); while (first < last) { if (nums[first] == target || (nums[first] > target && nums[first - 1] < target)) { return first; } int mid = first + (last - first) / 2; if (nums[mid] == target || (nums[mid] > target && nums[mid - 1] < target)) { return mid; } else if (nums[mid] < target) { first = mid + 1; } else { last = mid; } } //没有找到大于等于target的元素,那么返回nums.size() return nums.size(); } };
相关文章推荐
- 书评:《算法之美( Algorithms to Live By )》
- 动易2006序列号破解算法公布
- C#数据结构之顺序表(SeqList)实例详解
- C#递归算法之分而治之策略
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- Lua教程(七):数据结构详解
- 解析从源码分析常见的基于Array的数据结构动态扩容机制的详解
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#冒泡法排序算法实例分析
- C#数据结构之队列(Quene)实例详解
- C#数据结构揭秘一
- C#数据结构之单链表(LinkList)实例详解
- 算法练习之从String.indexOf的模拟实现开始
- C#算法之关于大牛生小牛的问题
- C#实现的算24点游戏算法实例分析
- 经典排序算法之冒泡排序(Bubble sort)代码
- c语言实现的带通配符匹配算法
- 数据结构之Treap详解