977. 有序数组的平方

image.png
提示:

  1. 1 <= A.length <= 10000
  2. -10000 <= A[i] <= 10000
  3. A 已按非递减顺序排序。

排序

  1. func sortedSquares(A []int) []int {
  2. for i,v:=range A{
  3. A[i] = v*v
  4. }
  5. sort.Ints(A)
  6. return A
  7. }

image.png

双指针

  1. package main
  2. import (
  3. "fmt"
  4. )
  5. func sortedSquares(A []int) []int {
  6. res := make([]int, len(A))
  7. l := 0
  8. r := len(A) - 1
  9. i := len(res) - 1
  10. var lRes, rRes int
  11. for l <= r {
  12. lRes = A[l] * A[l]
  13. rRes = A[r] * A[r]
  14. if lRes > rRes {
  15. res[i] = lRes
  16. l++
  17. } else {
  18. res[i] = rRes
  19. r--
  20. }
  21. i--
  22. }
  23. return res
  24. }
  25. func main() {
  26. fmt.Println(sortedSquares([]int{-4,-1,0,3,10}))
  27. fmt.Println(sortedSquares([]int{-7, -3, 2, 3, 11}))
  28. fmt.Println(sortedSquares([]int{1}))
  29. }

image.png