这题用指针的契合点:数组中所有数都平方后,最大的数肯定是从数组的两端开始寻找。
int* sortedSquares(int* nums, int numsSize, int* returnSize){
/*这个题目非常不好的地方就是returnsize这个函数参数,没什么用,
而且题目描述的不清楚,让人很头疼,不看答案都不知道这个参数要干嘛。
总之,returnSize没用。*/
int *result = (int*)malloc(sizeof(int) * numsSize);
*returnSize = numsSize;//这行没啥用,单纯为了能过这题
int k=numsSize-1;
int i,j;
for(i=0,j=numsSize-1;i<=j;)
{
if(nums[i]*nums[i]>nums[j]*nums[j])
{
result[k]=nums[i]*nums[i];
i++;
k--;
}
else
{
result[k]=nums[j]*nums[j];
j--;
k--;
}
}
return result;
}