数组
704
//[left,right]
class Solution {
public:
int search(vector<int>& nums, int target) {
int left=0,right=nums.size()-1;
int middle=0;
while(left<=right){
middle=left+((right-left)>>1);
if(nums[middle]>target){
right=middle-1;
}else if(nums[middle]<target){
left=middle+1;
}else{
return middle;
}
}
return -1;
}
};
//[left,right)
class Solution {
public:
int search(vector<int>& nums, int target) {
int left=0,right=nums.size();
int middle=0;
while(left<right){
middle=left+((right-left)>>1);
if(nums[middle]>target){
right=middle;
}else if(nums[middle]<target){
left=middle+1;
}else{
return middle;
}
}
return -1;
}
};
27
//这个之前写过都忘记了,有重新复习了一下
//暴力
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int count=nums.size();
int i=0,j=0;
while(i<count){
if(nums[i]==val){
for(int j=i;j<count-1;j++){
nums[j]=nums[j+1];
}
count--;
}else{
i++;
}
}
return count;
}
};
//快慢指针
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int count=nums.size();
int slow=0,fast=0;
while(fast<count){
if(nums[fast]==val){
fast++;
}else{
nums[slow]=nums[fast];
slow++;
fast++;
}
}
return slow;
}
};