按照Carl哥布置的算法训练营day1进行打卡
今天的两题用的是二分、双指针(在数组相关感觉是比较常用的,显著提升算法效率)
# 704. 二分查找
class Solution {
public:
int search(vector<int>& nums, int target) {
int left = 0, right = nums.size() - 1;
while (left < right) {
int mid = left +((right - left) / 2);
if (nums[mid] < target) {
left = mid + 1;
}
else if (nums[mid] > target) {
right = mid - 1;
}
else if (nums[mid] == target) {
return mid;
}
}
return -1;
}
};
# 27.移除元素
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int left = 0;
for (int right = 0; right < nums.size(); right++) {
if (val != nums[right]) {
nums[left++] = nums[right];
}
}
return left;
}
};