arrays - 排序结果数组

标签 arrays algorithm sorting

我在 Adob​​e 面试中被问到这个问题:

我们有一个按升序排序的整数数组。我们还有 3 个整数 ABC。我们需要为数组中的每个元素 x 应用 A*x*x + B*x + C 并返回相应的排序数组。

给我的例子:

Input array = -1 0 1 2 3 4
A = -1, B = 2, C = -1`

将公式应用于每个元素的结果 = -4 -1 0 -1 -4 -9
所以预期结果 = -9 -4 -4 -1 -1 0(已排序)

我最好的解决方案是应用公式并对它进行排序,得到 O(nlogn) 解决方案。我做得再好不过了。

任何改进它的指导都是有帮助的。

最佳答案

给出的方程是parabolic .因此,将其应用于已排序数组的结果将生成一个数组,该数组将具有最大值/最小值,其左右子数组已排序。

在您的情况下,最大值为 0,其左侧的子数组 [-4 -1] 按升序排序,其右侧的子数组[-1 -4 -9] 降序排列。

您需要做的就是合并这些排序的数组,这在时间上是线性的。

所以算法是:

  1. 对每个元素应用等式
  2. 找到最大值/最小值
  3. 合并子数组

关于arrays - 排序结果数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4551599/

相关文章:

c++ - 有没有像 "std::and"或 "std::or"这样的东西?

arrays - 如何获取 Google 表格中不同列中每个唯一值的最大值?

javascript - rxjs 观察数组推送

php - 按日期时间键对关联数组进行排序

java - 使用 boolean 值来识别/分离数组元素 (java)

查找数组中三个多数元素的算法

java - 为什么我会收到这个结果? java

按升序组合两个整数文件,比较它们,然后将它们排序到第三个文件中,而不使用c中的数组

java - 如何从用户接受整数并将其存储在java中的int数组

python - 根据索引列表从numpy数组中获取和替换值