首页 > 代码库 > [LeetCode]35.Search Insert Position
[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
【分析】
这道题比较简单,就是二分查找。思路就是每次取中间,如果等于目标即返回,否则根据大小关系切去一半。因此算法复杂度是O(logn),空间复杂度O(1)。
【代码】
/********************************* * 日期:2015-01-24 * 作者:SJF0115 * 题目: 35.Search Insert Position * 网址:https://oj.leetcode.com/problems/search-insert-position/ * 结果:AC * 来源:LeetCode * 博客: **********************************/ #include <iostream> #include <vector> 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<<result<<endl; return 0; }
[LeetCode]35.Search Insert Position
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。