一、题目介绍
给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。
示例 1:
输入:[-4,-1,0,3,10]
输出:[0,1,9,16,100]
示例 2:
输入:[-7,-3,2,3,11]
输出:[4,9,9,49,121]
提示:
1 <= A.length <= 10000
-10000 <= A[i] <= 10000
A 已按非递减顺序排序。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/squares-of-a-sorted-array
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
二、解题思路
通过分析知,将给定数组按照绝对值的大小进行升序排列,然后再对排序数组中每个元素求平方即可。
三、解题代码
class Solution {
public:
static bool cmp(const int& a, const int& b) //注意必须是一个全局性质的函数
{
return abs(a) < abs(b);
}
vector<int> sortedSquares(vector<int>& A) {
sort(A.begin(), A.end(), cmp); //将给定数组安装绝对值从小到大排列
int n = A.size();
for(int i = 0; i < n; ++i)
{
A[i] = A[i]*A[i];
}
return A;
}
};
四、解题结果