LeetCode704 二分查找
代码
class Solution {
public:
int search(std::vector<int>& nums, int target) {
int n = nums.size();
int low = 0, high = n-1;
while (low <= high){
int mid = (low + high)/2;
if (nums[mid] > target) high = mid - 1;
else if (nums[mid] < target) low = mid + 1;
else return mid;
}
return -1;
}
};
LeetCode27 移除元素
思路
使用快慢指针指向数组元素,当快指针指向的数组元素等于被删除元素val时,慢指针保持不动(即指向当前值为val的元素),快指针向前移动至不等于val值的元素,并将慢指针的值替换为快指针;
代码
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int slow = 0, fast = 0;
int n = nums.size();
while (fast < n){
if (nums[fast] != val) nums[slow++] = nums[fast];
fast++;
}
return slow;
}
};