一、暴力解法
测试代码
#include <stdio.h>
#include <stdlib.h>int* sortedSquares(int* nums, int numsSize, int* returnSize);
void print(int *nums, int len);int main()
{int nums[] = { -19, -10, -7, -4, -3, 0, 1, 3, 6, 7, 9, 10 };int len = sizeof(nums) / sizeof(nums[0]);int retlen = 0;int *ret = sortedSquares(nums, len, &retlen);print(ret, retlen);
}
void print(int *nums, int len) {for (int i = 0; i < len; ++i) {printf("%d\n", nums[i]);}printf("nums len = %d\n", len);
}
int* sortedSquares(int* nums, int numsSize, int* returnSize) {int *retNums = (int *)malloc(sizeof(int) * numsSize);//两个指针,一个从前往后,一个从后往前int left = 0;int right = numsSize - 1;for (int i = numsSize - 1; i >= 0; i--) {if (nums[left] * nums[left] >= nums[right] * nums[right]) {retNums[i] = nums[left] * nums[left];left++;}else {retNums[i] = nums[right] * nums[right];right--;}}*returnSize = numsSize;return retNums;
}