![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
给定一个按非递减顺序排序的整数数组 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 已按非递减顺序排序。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 int* sortedSquares(int* A, int ASize, int* returnSize){ 2 int i=0 , j=ASize-1 , k=ASize-1; 3 int *res = malloc(sizeof(int)*ASize); 4 *returnSize = ASize; 5 while (i<=j) 6 { 7 if (A[i]*A[i] < A[j]*A[j]) 8 { 9 res[k--] = A[j]*A[j]; 10 j --; 11 } 12 else 13 { 14 res[k--] = A[i]*A[i]; 15 i ++; 16 } 17 } 18 return res; 19 }
解题思路:
由于给出的数据是有序的,
使用双指针分别从数组两端向中间移动,
将绝对值为大的数的平方放置到新数组的末端,
从而完成有序数组的平方。