题目:
思路: 双指针法
left值向数组头,right指向数组尾,比较这两个指针所指的数的平方谁大,大的存进另设的数组中,然后移动指向那个大的数的指针。
代码:
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
int* sortedSquares(int* nums, int numsSize, int* returnSize){
int *ans=(int *)malloc(sizeof(int)*numsSize);
*returnSize=numsSize;
int left=0;
int right=numsSize-1;
int pos=numsSize-1;
while(left<=right){
if(nums[left]*nums[left]>nums[right]*nums[right]){
ans[pos]=nums[left]*nums[left];
left++;
}
else{
ans[pos]=nums[right]*nums[right];
right--;
}
pos--;
}
return ans;
}