代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素、977.有序数组的平方
704.二分查找
题目链接
class Solution {
public:
int search(vector<int>& nums, int target) {
int left = 0;
int right = nums.size() - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (nums[mid] == target) {
return mid;
}
if (nums[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
};
27.移除元素
题目链接
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int numsSize = nums.size();
int i = 0;
int j = 0;
while (i < numsSize) {
while(j < numsSize && nums[j] == val) {
j++;
}
if (j < numsSize) {
nums[i] = nums[j];
i ++;
j ++;
}else {
break;
}
}
return i;
}
};
977.有序数的平方
题目链接
class Solution {
public:
vector<int> sortedSquares(vector<int> &nums)
{
int i = 0;
for (; i < nums.size() - 1; i++) {
if (nums[i] >= 0) {
break;
}
}
vector<int> ans;
int j = i - 1;
int k = i;
while (j >= 0 || k < nums.size()) {
if (j < 0) {
ans.push_back(abs(nums[k]) * abs(nums[k]));
k++;
continue;
}
if (k >= nums.size()) {
ans.push_back(abs(nums[j]) * abs(nums[j]));
j--;
continue;
}
int a = abs(nums[j]) * abs(nums[j]);
int b = abs(nums[k]) * abs(nums[k]);
if (a <= b) {
ans.push_back(a);
j--;
} else {
ans.push_back(b);
k++;
}
}
return ans;
}
};