问题:
给你一个按非递减顺序排序的整数数组nums,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。
示例 :
输入:nums = [-4,-1,0,3,10]
输出:[0,1,9,16,100]
完整程序:
#include <stdio.h>
#include <windows.h>
int *sortedSquares(int *arraylist,int length) //函数声明
int main()
{
int arr[] = {-4,-1,0,3,10};
int length = sizeof(b) / sizeof(b[0]);
sortedSquares(arr,length);
system("pause");
return 0;
}
int *sortedSquares(int *arraylist,int length)
{
int right = length - 1; //指向数组的最后一位
int left = 0; //指向数组的第一位
int *returnlist = (int *)malloc(sizeof(int) * length); ///开辟一段空间保存平方后的数据(大小为原数组长度的大小)
for(int i = length - 1;i >=0;i--)
{
int lSquare = arraylist[left] * arraylist[left];
int rSquare = arraylist[right] * arraylist[right];
if(lSquare > rSquare)
{ //如果左值大于右值则将左值放在下标为i的位置,再将left指向的下标加 1
returnlist[i] = lSquare;
left ++;
}
else
{ //如果右值大于左值则将右值放在下标为i的位置,再将right指向的下标减 1
returnlist[i] = rSquare;
right --;
}
}
//输出排序后的数组
printf("排序后的数组为:\n");
for(int i = 0;i < length;i++)
{
printf("%d\t",returnlist[i]);
}
printf("\n");
return returnlist; //将新数组返回
}
测试结果:
声明:此文章为学习笔记,如有侵权请联系删除。