## 977. Squares of a Sorted Array

Given an integer array `nums`

sorted in **non-decreasing** order, return *an array of the squares of each number sorted in non-decreasing order*.

**Example 1:**

Input:nums = [-4,-1,0,3,10]Output:[0,1,9,16,100]Explanation:After squaring, the array becomes [16,1,0,9,100]. After sorting, it becomes [0,1,9,16,100].

**Example 2:**

Input:nums = [-7,-3,2,3,11]Output:[4,9,9,49,121]

**Constraints:**

`1 <= nums.length <= 10`

^{4}`-10`

^{4}<= nums[i] <= 10^{4}`nums`

is sorted in**non-decreasing**order.

**Follow up:**Squaring each element and sorting the new array is very trivial, could you find an

`O(n)`

solution using a different approach?## Rust Solution

```
struct Solution;
impl Solution {
fn sorted_squares(a: Vec<i32>) -> Vec<i32> {
let mut squared: Vec<i32> = a.iter().map(|a| a * a).collect();
squared.sort_unstable();
squared
}
}
#[test]
fn test() {
assert_eq!(
Solution::sorted_squares(vec![-4, -1, 0, 3, 10]),
vec![0, 1, 9, 16, 100]
);
assert_eq!(
Solution::sorted_squares(vec![-7, -3, 2, 3, 11]),
vec![4, 9, 9, 49, 121]
);
}
```

Having problems with this solution? Click here to submit an issue on github.