1.直接平方然后排序
2.使用双指针
思路:一个指针放开头(left),另一个指针放末尾(right),每次比较两者平方的大小,arr[left]大时,就往新数组里放,left++,同理得right–。
需要注意定义一个变量作为新数组的下标。
int* sortedSquares(int* nums, int numsSize, int* returnSize)
{
int* a=(int*)malloc(sizeof(int)*numsSize);
int k=numsSize-1;//新数组的下标
int left,right;
for(left=0,right=numsSize-1;left<=right;)
{
if(nums[left]*nums[left]>nums[right]*nums[right])
{
a[k]=nums[left]*nums[left];
k--;
left++;
}
else
{
a[k]=nums[right]*nums[right];
k--;
right--;
}
}
*returnSize=numsSize;
return a;
}