704 二分查找
注意点,左闭右闭
class Solution {
public:
int search(vector<int>& nums, int target) {
//整数类型的动态数组的引用。
int left=0;
int right = nums.size()-1;
while (left <= right){
int middle = (right+left)/2;
if (nums[middle]>target){ //在左区间
right = middle-1; //right移动到middle左边一位
}
if (nums[middle]<target){//在右区间
left = middle+1; //left移动到middle右边
}
if (nums[middle]==target){
return middle;
}
}
return -1;
}
};
27 移除元素
class Solution {//双指针法
public:
int removeElement(vector<int>& nums, int val) {
int left = 0;
int right = 0;
while (right<nums.size()){
if (nums[right]==val){ //快指针指向元素等于val
right += 1;
}
else{
nums[left] = nums[right];
left += 1;
right += 1;
}
}
return left;
}
};
977 有序数组的平方
class Solution {
public:
vector<int> sortedSquares(vector<int>& nums) {
int right=nums.size()-1;
vector<int> result(nums.size(),0);//创建一个名为 reuslt的大小为nums.size()的数组,值为0
int i=0,j=nums.size()-1;
while(i<=j){
if (nums[i]*nums[i]<nums[j]*nums[j]){
result[right]=nums[j]*nums[j];
j -= 1;
right -= 1;
}
else{
result[right] = nums[i]*nums[i];
i += 1;
right -= 1;
}
}
return result;
}
};