Título: https://leetcode-cn.com/problems/search-insert-position/
Solución 1, violenta
O (n) O (1)
Preste atención a dos condiciones a. Cuando no hay elementos en la matriz b. El último elemento no es mayor que el objetivo
class Solution {
public:
int searchInsert(vector<int>& nums, int target) {
size_t i = 0;
while (i < nums.size()) {
if (nums[i] >= target) {
return i;
}
i++;
}
return i == nums.size() ? i : -1;
}
};
Solución 2, búsqueda binaria
O (logn) O (1)
Tenga en cuenta que la condición de terminación del bucle, el valor de mid y l + r pueden cruzar el límite.
class Solution {
public:
int searchInsert(vector<int>& nums, int target) {
size_t l = 0, r = nums.size();
while (l < r) {
// size_t mid = (l + r) / 2;
size_t mid = l + (r - l) / 2;
if (nums[mid] == target) {
return mid;
}
if (nums[mid] < target) {
l = mid + 1;
}
if (nums[mid] > target) {
r = mid;
}
}
return l;
}
};
EOF