# 977. Squares of a Sorted Array

Easy
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 <= 104`
• `-104 <= nums[i] <= 104`
• `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?

### 解題

func sortedSquares(nums []int) []int {
for i:=0; i<len(nums); i++ {
nums[i] = nums[i]*nums[i]
}
sort.Ints(nums)
return nums
}

Runtime: 19 ms, faster than 99.75%
Memory Usage: 6.6 MB, less than 95.67%
func sortedSquares(nums []int) []int {
l := 0
r := len(nums)-1
length := len(nums)
index := length-1
ans := make([]int, length)
for l <= r {
if Abs(nums[l])>Abs(nums[r]) {
ans[index] = nums[l]*nums[l]
l++
} else {
ans[index] = nums[r]*nums[r]
r--
}
index--
}
return ans
}
func Abs(x int) int {
if x < 0 {
return -x
}
return x
}