[LeetCode]35.Search|[LeetCode]35.Search Insert Position
【题目】
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
【分析】 【[LeetCode]35.Search|[LeetCode]35.Search Insert Position】这道题比较简单,就是二分查找。思路就是每次取中间,如果等于目标即返回,否则根据大小关系切去一半。因此算法复杂度是O(logn),空间复杂度O(1)。
【代码】
/*********************************
*日期:2015-01-24
*作者:SJF0115
*题目: 35.Search Insert Position
*网址:https://oj.leetcode.com/problems/search-insert-position/
*结果:AC
*来源:LeetCode
*博客:
**********************************/
#include
#include
using namespace std;
class Solution {
public:
int searchInsert(int A[], int n, int target) {
if(n <= 0){
return -1;
}//if
int start = 0,end = n - 1;
// 二分查找
while(start <= end){
int mid = start + ((end - start) >> 1);
// 目标找到
if(A[mid] == target){
return mid;
}//if
// 目标在左半部分
else if(A[mid] > target){
end = mid - 1;
}//else
// 目标在右半部分
else{
start = mid + 1;
}//else
}//while
// 目标元素没有找到则找插入位置
return start;
// end + 1
}
};
int main(){
Solution solution;
int A[] = {1,3,5,6};
int n = 4;
int target = 0;
int result = solution.searchInsert(A,n,target);
// 输出
cout<
文章图片
推荐阅读
- 【Leetcode/Python】001-Two|【Leetcode/Python】001-Two Sum
- leetcode|leetcode 92. 反转链表 II
- 二叉树路径节点关键值和等于目标值(LeetCode--112&LeetCode--113)
- LeetCode算法题-11.|LeetCode算法题-11. 盛最多水的容器(Swift)
- LeetCode(03)Longest|LeetCode(03)Longest Substring Without Repeating Characters
- Leetcode|Leetcode No.198打家劫舍
- [leetcode数组系列]1两数之和
- 数据结构和算法|LeetCode 的正确使用方式
- leetcode|今天开始记录自己的力扣之路
- LeetCode|LeetCode 876. 链表的中间结点