# 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)。