代码随想录Day1(704. 二分查找,27. 移除元素)
704. 二分查找
思路:
class Solution {
public:
int search(vector<int>& nums, int target) {
int i = 0;
int j = nums.size()-1;
while(i<=j){
int mid = (i+j)/2;
if(nums[mid]==target){
return mid;
}
if(target<nums[mid]){
j = mid-1;
}
if(target>nums[mid]){
i = mid+1;
}
if(i > j){
return -1;
}
}
return -1;
}
};
27. 移除元素
思路:
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int n = nums.size();
int j = nums.size()-1;
for(int i=0; i<=j; i++){
if(i==j){
if(nums[i]==val){
return n-1;
}
else{
return n;
}
}
if(nums[i]==val){
while(j>=0 && nums[j]==val){
j--;
n--;
}
if(i>j){
return max(n,0);
}
nums[i] = nums[j];
n--;
j--;
}
}
return n;
}
};
总结
注意边界条件。