WooKinson

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。

 

示例 1:

输入:[-4,-1,0,3,10]
输出:[0,1,9,16,100]
示例 2:

输入:[-7,-3,2,3,11]
输出:[4,9,9,49,121]
 

提示:

1 <= A.length <= 10000
-10000 <= A[i] <= 10000
A 已按非递减顺序排序。
题目描述

 

 1 int* sortedSquares(int* A, int ASize, int* returnSize){
 2     int i=0 , j=ASize-1 , k=ASize-1;
 3     int *res = malloc(sizeof(int)*ASize);
 4     *returnSize = ASize;
 5     while (i<=j)
 6     {        
 7         if (A[i]*A[i] < A[j]*A[j])
 8         {
 9             res[k--] = A[j]*A[j];
10             j --;
11         }
12         else
13         {
14             res[k--] = A[i]*A[i];
15             i ++;            
16         }
17     }
18     return res;
19 }
C解法

 

解题思路:

由于给出的数据是有序的,

使用双指针分别从数组两端向中间移动,

将绝对值为大的数的平方放置到新数组的末端,

从而完成有序数组的平方。

posted on 2019-06-05 11:29  WooKinson  阅读(150)  评论(0编辑  收藏  举报