class Solution {
public:
int search(vector<int>& nums, int target) {
int left = 0; int right = nums.size() - 1;
while (left <= right) {
int middle = (left + right) / 2;
if (nums[middle] > target) {
right = middle - 1;
}
else if (nums[middle] < target) {
left = middle + 1;
}
else return middle;
}
return -1;
}
};
class Solution {
public:
int searchInsert(vector<int>& nums, int target) {
int left = 0; int right = nums.size() - 1;
while (left <= right) {
int middle = (left + right) / 2;
if (nums[middle] > target) {
right = middle - 1;
}
else if (nums[middle] < target) {
left = middle + 1;
}
else return middle;
}
return right + 1;
}
};
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int fast = 0; int slow = 0;
int n = nums.size();
while (fast < n) {
if (nums[fast] != val) {
nums[slow] = nums[fast];
slow++;
}
fast++;
}
return slow;
}
};