题目
Given an integer array nums sorted in non-decreasing order, return an array of the squares of each number sorted in non-decreasing order.
给定一个非递减排序的数组,返回每个数组的平方的非递减排序。
思路
每个元素取平方,再排序。
代码实现
int* sortedSquares(int* nums, int numsSize, int* returnSize){
int* array = (int*)malloc(sizeof(int) * numsSize);
for(int i = 0; i <= numsSize - 1; i++) {
array[i] = nums[i] * nums[i];
}
//选择排序
for(int i = 0; i <= numsSize - 1; i++) {
int min_order = i;
for(int j = i; j <= numsSize - 1; j++) {
if(array[j] < array[min_order]) {
min_order = j;
}
}
int temp = array[i];
array[i] = array[min_order];
array[min_order] = temp;
}
*returnSize = numsSize;
return array;
}
坑
returnSize是一个指向“返回的数组的大小的变量”的指针,需要自己赋值。
其它思路
根据给定数组原本就有序的特点,可以看出最大值一定在给定数组的头尾,通过比较头尾元素的最大值可以找到结果数组的最大值。