704 二分查找
vector<int> nums; //不指定长度
vector<int> nums(n); //指定长度
添加元素
nums.push_back(1); //直接在末端添加元素1
删除元素
nums.resize(num.size-i); //删除后面i个元素
nums.pop_back(); //删除最后一个元素
获取长度
nums.size();
判空
nums.empty();
nums.size()==0;
5.题解:
class Solution {
public:
int search(vector<int>& nums, int target) {
int left = 0;
int right = nums.size()-1;
while(left<=right){
int middle=(left+right)/2;
if(nums[middle]>target){
right=middle-1;
}
else if(nums[middle]<target){
left=middle+1;
}
else return middle;
}
return -1;
}
};
class Solution {
public:
int search(vector<int>& nums, int target) {
int left=0;
int right=nums.size();
while(left<right){
int middle=(left+right)/2;
if(nums[middle]>target){
right=middle;
}
else if(nums[middle]<target){
left=middle+1;
}
else return middle;
}
return -1;
}
};
27 移除元素
1.for循环的逻辑
下面来看看它的执行过程:
- 求解表达式1。
- 求解表达式2。若其值为真,则执行 for 语句中指定的内嵌语句,然后执行第3步;若表达式2值为假,则结束循环,转到第5步。
- 求解表达式3。
- 转回上面第2步继续执行。
- 循环结束,执行 for 语句下面的语句。
2.题解
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];
slow++;
}
}
return slow;
}
};
浙公网安备 33010602011771号