704
利用左右指针确认边界,利用中指针进行查找。
进入循环后先判断nums[mid]是否等于target,等于则返回下标,不等于则移动指针。
class Solution {
public:
int search(vector<int>& nums, int target) {
int left = 0;
int right = nums.size() - 1;
int mid = left + (right - left)/2;
while(left <= right )
{
if(nums[mid] == target)
{
return mid;
}
if(nums[mid] > target)
{
right = mid - 1;
mid = left + (right - left)/2;
}
if(nums[mid] < target)
{
left = mid + 1;
mid = left + (right - left)/2;
}
}
return -1;
}
};
27
设置快慢指针,快指针用于遍历数组,慢指针用于构建新数组。
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int fast = 0;
int slow = 0;
for(;fast < nums.size();fast++)
{
if(nums[fast] != val)
{
nums[slow] = nums[fast];
slow++;
}
}
return slow;
}
};
977
遍历数组将数组每一个元素,将其平方
然后排序
class Solution {
public:
vector<int> sortedSquares(vector<int>& nums) {
for(int i = 0;i < nums.size();i++)
{
nums[i] *= nums[i];
}
sort(nums.begin(),nums.end());
return nums;
}
};