题目
给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/squares-of-a-sorted-array
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
示例
示例1
输入:nums = [-4,-1,0,3,10]
输出:[0,1,9,16,100]
解释:平方后,数组变为 [16,1,0,9,100]
排序后,数组变为 [0,1,9,16,100]
示例2
输入:nums = [-7,-3,2,3,11]
输出:[4,9,9,49,121]
代码实现(C语言)
因为原始数组中可能存在负数,经过平方之后,会比有些正数还大,所以再平方之后需要再次排序一遍。我用到的是 qsort()
int mycmp(const void* p1, const void* p2)
{
const int* a = (const int*)p1;
const int* b = (const int*)p2;
return *a - *b;
}
int* sortedSquares(int* nums, int numsSize, int* returnSize)
{
for (int i = 0; i < numsSize; ++i)
{
nums[i] = nums[i] * nums[i];
}
qsort(nums, numsSize, sizeof(int), mycmp);
*returnSize = numsSize;
return nums;
}