Folioevanzhou.org
← 返回 Kata
EasyLeetCode2026-09-10原题 ↗

064Squares of a Sorted Array

arraytwo-pointerssorting

Problem

给定一个按非递减顺序排列的整数数组 nums

请返回一个新数组,其中包含 nums 中每个数字的平方,并且结果也要按非递减顺序排列。

例如:

nums = [-4, -1, 0, 3, 10]

每个数字平方后得到:

[16, 1, 0, 9, 100]

将这些平方值按非递减顺序排列后,应返回:

[0, 1, 9, 16, 100]

注意:虽然原数组已经有序,但负数平方后可能大于正数的平方,所以直接依次平方不一定能保持结果有序。

Examples

示例 1

Input:  nums = [-4, -1, 0, 3, 10]
Output: [0, 1, 9, 16, 100]

解释:平方后得到 [16, 1, 0, 9, 100],按非递减顺序排列后为 [0, 1, 9, 16, 100]

示例 2

Input:  nums = [-7, -3, 2, 3, 11]
Output: [4, 9, 9, 49, 121]

解释:平方后得到 [49, 9, 4, 9, 121],按非递减顺序排列后为 [4, 9, 9, 49, 121]

示例 3

Input:  nums = [-2, -1]
Output: [1, 4]

解释:两个负数平方后分别为 41,因此结果为 [1, 4]

Constraints

  • 11 \leq nums.length 104\leq 10^4
  • 104-10^4 \leq nums[i] 104\leq 10^4
  • nums 按非递减顺序排列

最初怎么想、怎样补完整、最后如何落成。