二分查找
思路
二分法的限制条件,有序,无重复,看到两个条件要考虑一下二分法
根据区间不变量,看一下左闭右闭和左闭右开的写法区别,理解后记忆
class Solution {
public:
int search(vector<int>& nums, int target) {
int left = 0, right = nums.size() - 1;
int mid = 0;
while (left <= right) {
mid = (left + right) / 2;
if (nums[mid] == target) {
return mid;
} else if (target < nums[mid]) {
right = mid - 1;
} else {
left = mid + 1;
}
}
return -1;
}
};
题目链接:https://leetcode.cn/problems/binary-search/
文章讲解:https://programmercarl.com/0704.%E4%BA%8C%E5%88%86%E6%9F%A5%E6%89%BE.html
视频讲解:https://www.bilibili.com/video/BV1fA4y1o715
移除元素
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
// 双指针,原地删除数组中为x的数
int len = nums.size();
int slow = 0;
for (int fast = 0; fast < len; fast++) {
// 如果当前的值不是val,那么就加入进去
if (nums[fast] != val) {
nums[slow++] = nums[fast];
}
}
return slow;
}
};
题目链接:https://leetcode.cn/problems/remove-element/
文章讲解:https://programmercarl.com/0027.%E7%A7%BB%E9%99%A4%E5%85%83%E7%B4%A0.html
视频讲解:https://www.bilibili.com/video/BV12A4y1Z7LP