暴力
class Solution {
public:
int search(vector<int>& nums, int target) {
int i,flag=0;
for(i=0;i<nums.size()&&target>=nums[i];i++){
if(target==nums[i]){
flag=1;
break;
}
}
if(flag==0){
i=-1;
}
return i;
}
};
二分查找
class Solution {
public:
int search(vector<int>& nums, int target) {
int low=0,high=nums.size()-1;
while(low<=high){
//int mid=(low+high)/2;
int mid=low+(high-low)/2; //防溢出
if(nums[mid]==target)
return mid;
else if(nums[mid]>target)
high=mid-1;
else
low=mid+1;
}
return -1;
}
};
27.移除元素
法一:暴力双循环
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int num=nums.size();
for(int i=0;i<num;){
if(nums[i]==val){
for(int j=i;j<num-1;j++){
nums[j]=nums[j+1];
}
num--;
}else{
i++;
}
}
return num;
}
};
法二:双指针
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int j=0;
for(int i=0;i<nums.size();i++){
if(nums[i]!=val){
nums[j++]=nums[i];
}
}
return j;
}
};