Squares of a Sorted Array

Posted by Bill on March 11, 2023

Squares of a Sorted Array

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.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Example 1:

Input: [-4,-1,0,3,10]
Output: [0,1,9,16,100]
Example 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.

Java Solution:

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
class Solution {
    private boolean less(int v, int w) {
        return v < w;
    }

    private void exch(int[] a, int i, int j) {
        int t = a[i];
        a[i] = a[j];
        a[j] = t;
    }


    public int[] sortedSquares(int[] A) {
        int N = A.length;
        int [] tmp = new int[N];
        for (int i = 0; i < N; i++) {
            tmp[i] = Math.abs(A[i]);
        }

        for(int i = 1 ; i < N; i++){
            for(int j = i; j > 0 && less(tmp[j], tmp[j-1]);j--){
                exch(tmp, j, j-1);
            }
        }

        for (int i = 0; i <N; i++) {
            int var = tmp[i];
            tmp[i] = var * var;
        }
        return tmp;
    }
}