搜索在 C++ 中插入的位置
假设我们有一个已排序的数组 arr 和一个目标值,我们必须在找到目标值时找到其索引。如果未找到,则返回将其按顺序插入时的索引。
因此,如果输入像 [1,3,4,6,6],而目标值为 5,那么输出将是 3,因为我们可以在索引 3 处插入 5,因此数组将变为 [1,3,4,5,6,6]
要解决此问题,我们将按照以下步骤操作:
n := A 的大小
如果 n < 1,则
返回 0
low := 0,high := n - 1
当 low <= high 时,执行以下操作:
mid := low + (high - low) /2
如果 A[mid] 与目标值相同时,则
返回 mid
否则,当 A[mid] > target 时,执行以下操作:
high := mid - 1,pos := mid
否则
low := mid + 1,pos := mid + 1
返回 pos
示例
为了更好地理解,让我们看看以下实现:
#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
广告
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 语言程序编写
C++
C#
MongoDB
MySQL
Javascript
PHP