LeetCode 训练场:977. 有序数组的平方
发布日期:2021-05-08 06:28:18 浏览次数:12 分类:精选文章

本文共 845 字,大约阅读时间需要 2 分钟。

1. 题目

给定一个按非递减顺序排序的整数数组 A,要求返回一个新数组,该数组包含每个数字的平方,并且这个新数组也按非递减顺序排序。

2. 描述

输入数组 A 是一个按非递减顺序排序的整数数组。任务是对数组中的每个元素进行平方操作,并将结果组成一个新的数组。新数组也应该按照非递减顺序排列。例如,输入数组为 [-4, -1, 0, 3, 10],输出数组为 [0, 1, 9, 16, 100]。另一个示例中,输入数组为 [-7, -3, 2, 3, 11],输出数组为 [4, 9, 9, 49, 121]

3. 思路

为了实现这一任务,可以采用以下步骤:首先,遍历输入数组中的每一个元素,计算其平方值并存储到一个新的数组中。然后,对这个新数组进行排序,确保其元素按照非递减顺序排列。这种方法的时间复杂度为 O(n log n),其中 n 是输入数组的长度。这种方法的时间复杂度是由排序操作主导的,因为遍历操作的时间复杂度为 O(n)

4. 实现

以下是实现该功能的具体代码示例(以Java为例):

public int[] sortedSquares(int[] A) {    // 声明一个与输入数组长度相等的结果数组    int[] result = new int[A.length];    // 遍历输入数组中的每一个元素,并计算其平方值    for (int i = 0; i < A.length; i++) {        result[i] = A[i] * A[i];    }    // 对结果数组进行排序    Arrays.sort(result);    return result;}

在这个实现中,首先创建了与输入数组长度相同的结果数组。然后,通过遍历输入数组中的每一个元素,计算其平方值并存储到结果数组中。最后,对结果数组进行排序,确保输出数组按照非递减顺序排列。这种方法简单且高效,能够在 O(n log n) 的时间复杂度内完成任务。

上一篇:LeetCode 训练场:905. 按奇偶排序数组
下一篇:LeetCode 训练场:1464. 数组中两元素的最大乘积

发表评论

最新留言

不错!
[***.144.177.141]2025年03月25日 15时57分39秒