双指针法
- 使用index从后往前记录新数组的下标
- 注意内存申请的方法
- 注意for循环里是left <= right,如果只是 < 就结束循环,会有一个值不被处理
int* sortedSquares(int* nums, int numsSize, int* returnSize) {
*returnSize = numsSize;
int* retArray = (int*)malloc(sizeof(int) * numsSize);
int index = numsSize - 1;
for (int left = 0, right = numsSize - 1; left <= right;) {
int lSquare = nums[left] * nums[left];
int rSquare = nums[right] * nums[right];
if (lSquare > rSquare) {
retArray[index] = lSquare;
--index;
++left;
} else {
retArray[index] = rSquare;
--index;
--right;
}
}
return retArray;
}