给你一个按 非递减顺序 排序的整数数组 nums
,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。
示例 1:
输入:nums = [-4,-1,0,3,10] 输出:[0,1,9,16,100] 解释:平方后,数组变为 [16,1,0,9,100] 排序后,数组变为 [0,1,9,16,100]
示例 2:
输入:nums = [-7,-3,2,3,11] 输出:[4,9,9,49,121]
#include
#include
using namespace std;
class Solution {
public:
vector sortedSquares(vector& nums) {
int left = 0;
int right = nums.size() - 1;
int p = nums.size() - 1;
std::vector results(nums.size(), 0);
for ( ; left <= right; ) {
if (nums[left]*nums[left] > nums[right]*nums[right]) {
results[p--] = nums[left] * nums[left];
left++;
}
else {
results[p--] = nums[right] * nums[right];
right--;
}
}
return results;
}
};
int main()
{
std::vector nums = { -4,-1,0,3,10 };
Solution Solution;
for (int i : Solution.sortedSquares(nums)) {
std::cout << i << " ";
}
return 0;
}