977. 有序数组的平方
给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。
示例 1:
输入:[-4,-1,0,3,10]
输出:[0,1,9,16,100]
示例 2:
输入:[-7,-3,2,3,11]
输出:[4,9,9,49,121]
解题思路
因为数组中存在负数,所以有些数组的平方值可能会大于之前排在其后边的数组的平方值,因此可以将负数先转换成正数,然后进行排序,最后再算出它的平方值。
实现代码
int* sortedSquares(int* A, int ASize, int* returnSize){
int j,k,increment;
int temp;
if(ASize==0){
return NULL;
}
for(int i=0;i<ASize;i++){ //遍历数组
if(A[i]<0){ //若数组值为负数,则加上个负号变为正数
A[i] = -A[i];
}
}
for(increment=ASize/2;increment>0;increment/=2){