# 977. 有序数组的平方

给你一个按非递减顺序排序的整数数组 nums,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。

# 解题思路

遍历取每一项的平均值放入一个优先队列中,最后返回队列中的元素。

/**
 * @param {number[]} nums
 * @return {number[]}
 */
var sortedSquares = function (nums) {
  if (!nums || !nums.length) return nums

  class PriorityQueue {
    constructor() {
      this.items = []
    }

    // 插入元素,保持优先队列的特性
    enqueue(item) {
      if (this.items.length === 0) {
        this.items.push(item)
      } else {
        let added = false
        for (let i = 0; i < this.items.length; i++) {
          if (item < this.items[i]) {
            this.items.splice(i, 0, item)
            added = true
            break
          }
        }
        if (!added) {
          this.items.push(item)
        }
      }
    }
  }

  const priorityQueue = new PriorityQueue()

  for (let i = 0; i < nums.length; i++) {
    priorityQueue.enqueue(nums[i] ** 2)
  }

  return priorityQueue.items
}

其它解题思路参考官方题解 (opens new window)

# 参考