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;
}
该代码实现了一个算法,通过双指针技巧对数组中的元素进行平方后排序。左指针从数组开始,右指针从末尾开始,比较两个指针所指元素的平方值,将较大的平方值放入新数组中,并相应移动指针。最后返回新数组的大小。
1148

被折叠的 条评论
为什么被折叠?



