704. 二分查找
笔记
- 学习mid的计算方法,防止溢出
- 我的代码是左闭右闭的,while循环的条件应该包
C++代码
class Solution {
public:
int search(vector<int>& nums, int target) {
int left=0;
int right=nums.size()-1;
int mid;
while(left<=right){
mid=left+((right-left)/2);
if(nums[mid]>target){
right=mid-1;
}else if(nums[mid]<target){
left = mid+1;
}else{
return mid;
}
}
return -1;
}
};
27. 移除元素
笔记
- 双指针的思想,首先确定快慢指针的更新方式,即快指针在遇到非val值时,更新慢指针
- 返回的数组长度是慢指针+1,即符合条件的数组长度
C++代码
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int slow=0;
for(int fast=0;fast<nums.size();fast++){
if(nums[fast]!=val){
nums[slow++]=nums[fast];
}
}
return slow;
}
};