1. 704二分查找
class Solution {
public:
int search(vector<int>& nums, int target) {
int left=0,right=nums.size()-1;
int mid;
while(left<=right){
mid=(left+right)/2;
if(nums[mid]==target)
return mid;
else if(nums[mid]>target)
right=mid-1;
else
left=mid+1;
}
return -1;
}
};
2. 27移除元素
2.1 枚举版
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int cnt = nums.size();
vector<int> a;
for (int i=0;i<nums.size();i++) {
if (nums[i] == val)
cnt--;
else
a.push_back(nums[i]);
}
nums = a;
return cnt;
}
};
2.2 双向版
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int cnt = nums.size();
vector<int> a;
for (int i=0,j=nums.size()-1;i<j;i++,j--) {
if(nums[i]!=val){
a.push_back(nums[i]);
}
if(nums[j]!=val){
a.push_back(nums[j]);
}
if (nums[i] == val)
cnt--;
if(nums[j] == val)
cnt--;
}
nums = a;
return cnt;
}
};
2.3 双指针版
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int reserveNumCnt = 0;
for(int i=0;i<nums.size();i++){
if(nums[i]!=val){
nums[reserveNumCnt++] = nums[i];
}
}
return reserveNumCnt;
}
};