977. Squares of a Sorted Array(有序数组的平方)
题目:
给定一个按非递减顺序排序的整数数组 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
已按非递减顺序排序。
思路:
非递减顺序,再加上存在负数,可以通过在两端比较:先取head和tail表示两端的位置,比较两个数的平方,平方较大者,放到新数组的靠后位置。
(真要偷懒可以直接用sort,但是这样就没啥意义了)
代码:
1 public int[] sortedSquares(int[] A) 2 { 3 int len = A.length; 4 int head = 0; 5 int tail = len-1; 6 int [] B = new int [len] ; 7 while(head <= tail) 8 { 9 len--; 10 int i = A[head]*A[head]; 11 int j = A[tail]*A[tail]; 12 if(i>j) 13 { 14 B[len] = i; 15 head++; 16 } 17 else 18 { 19 B[len] = j; 20 tail--; 21 } 22 } 23 return B; 24 }
原文地址:https://www.cnblogs.com/blogxjc/p/10966177.html
时间: 2024-10-08 19:09:36