考虑到负数的存在,平方值最大的数只可能在原数组的左边或是右边,使用双指针:
func sortedSquares(nums []int) []int {
n := len(nums)
i, j, index := 0, n - 1, n - 1
res := make([]int, n)
for i <= j {
if nums[i] * nums[i] > nums[j] * nums[j] {
res[index] = nums[i] * nums[i]
i++
} else {
res[index] = nums[j] * nums[j]
j--
}
index--
}
return res
}