Given an array of integers A sorted in non-decreasing order, return an array of the squares of each number, also in sorted non-decreasing order.
Example
No.1
Input: [-4,-1,0,3,10]
Output: [0,1,9,16,100]
No.2
Input: [-7,-3,2,3,11]
Output: [4,9,9,49,121]
Note
1 <= A.length <= 10000
-10000 <= A[i] <= 10000
A is sorted in non-decreasing order.
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
public int[] sortedSquares(int[] A) { int n = A.length; int[] result = new int[n]; int right = 0;
while (right < n && A[right] < 0) right++;
int left = right - 1; int i = 0;
while (left >= 0 && right < n) { if (A[left] * A[left] < A[right] * A[right]) { result[i++] = A[left] * A[left]; left--; } else { result[i++] = A[right] * A[right]; right++; } }
while (left >= 0) { result[i++] = A[left] * A[left]; left--; }
while (right < n) { result[i++] = A[right] * A[right]; right++; }
return result; }
|
近期评论