class Solution {
public:
int searchInsert(int A[], int n, int target) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
int left = 0;
int right = n;
int lm, rm;
while (left < right)
{
int mid = left + (right - left) / 2;
if (mid == n)
{
lm = A[mid - 1];
rm = INT_MAX;
}
else if (mid == 0)
{
lm = INT_MIN;
rm = A[mid];
}
else
{
lm = A[mid - 1];
rm = A[mid];
}
if (target > lm && target <= rm)
return mid;
else if (target > rm)
{
left = mid + 1;
}
else
{
right = mid - 1;
}
}
}
};
class Solution {
public:
int searchInsert(int a[], int n, int target) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
if (n == 0) return 0;
int left = 0;
int right = n;
while (left <= right)
{
int mid = left + (right - left) / 2;
int midE = getValue(a, mid, n);
int leftE = getValue(a, left, n);
int rightE = getValue(a, right, n);
if (midE >= target && target > getValue(a, mid - 1,n))
{
return mid;
}
else if (target > midE)
{
left = mid + 1;
}
else
right = mid - 1;
}
}
int getValue(int a[], int idx, int n)
{
if (idx == -1)
return INT_MIN;
else if (idx == n)
return INT_MAX;
else
return a[idx];
}
};