977. 有序数组的平方 - 力扣(LeetCode)
目录
方案1:找到正负数的分界,然后归并
运行结果
代码
方案2:从两端到中间直接归并
运行结果
代码

977. 有序数组的平方 - 力扣(LeetCode)
目录
方案1:找到正负数的分界,然后归并
运行结果
代码
方案2:从两端到中间直接归并
运行结果
代码
class Solution {
public:
vector sortedSquares(vector& nums) {
int size = nums.size();
int beg = 0, end = size;
while (beg != end) {
int mid = beg + (end - beg) / 2;
nums[mid] < 0 ? beg = mid + 1 : end = mid;
}
vector square(size);
int i = 0, iter = beg, riter = beg - 1;
while (iter < size && riter >-1) {
if (nums[iter] < -nums[riter]) {
square[i] = nums[iter] * nums[iter];
++iter;
}
else {
square[i] = nums[riter] * nums[riter];
--riter;
}
++i;
}
while (iter < size) {
square[i++] = nums[iter] * nums[iter];
++iter;
}
while (riter > -1) {
square[i++] = nums[riter] * nums[riter];
--riter;
}
return square;
}
};
class Solution {
public:
vector sortedSquares(vector& nums) {
int size = nums.size();
int iter = 0, riter = size - 1, i = riter;
vector square(size);
while (i != -1) {
if (abs(nums[iter]) > abs(nums[riter])) {
square[i] = nums[iter] * nums[iter];
++iter;
}
else {
square[i] = nums[riter] * nums[riter];
--riter;
}
--i;
}
return square;
}
};