在C ++中搜索插入位置
假设我们有一个排序后的数组arr和一个目标值,我们必须在找到目标时找到索引。如果不存在,则返回按顺序插入索引的位置的索引。
因此,如果输入类似于[1,3,4,6,6],而target=5,则输出将为3,因为我们可以在索引3处插入5,所以数组将为[1,3,4,5,6,6]
为了解决这个问题,我们将按照以下步骤操作:
n:=A的大小
如果n<1,则-
返回0
低:=0,高:=n-1
当低<=高时,执行-
低:=中+1,pos:=中+1
高:=中-1,pos:=中
返回中
中:=低+(高-低)/2
如果A[mid]与目标相同,则-
否则,当A[mid]>目标时,则-
除此以外
返回位置
例
让我们看下面的实现以更好地理解-
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
int searchInsert(vector<int>& A, int target) {
int n = A.size();
if(n < 1) {
return 0;
}
int low = 0;
int high = n-1;
int mid;
int pos;
while(low <= high) {
mid = low + (high-low)/2;
if(A[mid] == target) {
return mid;
}
else if(A[mid] > target) {
high = mid - 1;
pos = mid;
}
else {
low = mid + 1;
pos = mid + 1;
}
}
return pos;
}
};
main(){
Solution ob;
vector<int&g; v = {1,3,4,6,6};
cout << (ob.searchInsert(v,5));
}输入值
{1,3,4,6,6},5输出结果
3