Given an integer array nums sorted in non-decreasing order, return an array of the squares of each number sorted in non-decreasing order.
Example 1:
Input: nums = [-4,-1,0,3,10] Output: [0,1,9,16,100] Explanation: After squaring, the array becomes [16,1,0,9,100]. After sorting, it becomes [0,1,9,16,100].
Example 2:
Input: nums = [-7,-3,2,3,11] Output: [4,9,9,49,121]
Constraints:
1 <= nums.length <= 104-104 <= nums[i] <= 104numsis sorted in non-decreasing order.
Follow up: Squaring each element and sorting the new array is very trivial, could you find an O(n) solution using a different approach?
class Solution {
public:
vector<int> sortedSquares(vector<int>& nums) {
vector<int> res;
for (int num:nums){
res.push_back(num*num);
}
sort(res.begin(),res.end());
return res;
}
};
本文介绍如何在O(n)时间内,对于已排序的整数数组,计算每个元素的平方并保持非递减顺序。通过不同的算法思路,挑战传统排序后再平方的方法,提供一种更高效的解决方案。
178

被折叠的 条评论
为什么被折叠?



