704. 二分查找
学习资料
文章讲解:代码随想录
视频讲解:手把手带你撕出正确的二分法 | 二分查找法 | 二分搜索法 | LeetCode:704. 二分查找_哔哩哔哩_bilibili
思路
有序数组使用二分法降低时间复杂度
代码
左闭右闭
class Solution {
public:
int search(vector<int>& nums, int target) {
int l = 0;
int r = nums.size() - 1;
int mid;
while(l <= r){
mid = l + ((r - l) >> 1);
if (target == nums[mid]){
return mid;
}
else if (nums[mid] < target){
l = mid + 1;
}
else{
r = mid - 1;
}
}
return -1;
}
};
左闭右开
class Solution {
public:
int search(vector<int>& nums, int target) {
int l = 0;
int r = nums.size();
int mid;
while(l < r){
mid = l + ((r - l) >> 1);
if (target == nums[mid]){
return mid;
}
else if (nums[mid] < target){
l = mid + 1;
}
else{
r = mid;
}
}
return -1;
}
};
27. 移除元素
学习资料
文章讲解:代码随想录
视频讲解:数组中移除元素并不容易! | LeetCode:27. 移除元素_哔哩哔哩_bilibili
思路
双指针一层循环内解决,降低时间复杂度
代码
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int left = 0;
int right = 0;
while(right < nums.size()){
if(nums[right] != val){
nums[left] = nums[right];
left++;
}
right++;
}
return left;
}
};