按线性时间对特定序列进行排序



我正在研究这个挑战:

给定一个按绝对值排序的整数序列,返回按其有符号值排序的序列。以下规则适用:

  1. 您只能在一个方向上遍历序列
  2. 您不能随机访问任何位置的元素:您必须从第一个元素开始并遍历
  3. 您可以选择任何数据结构来接受序列的输入,条件是数据结构不为您排序

如何使用O(n(时间复杂性来解决此问题?

下面是一个使用堆栈的可能算法:

  • 在第一次迭代中,将负值推送到堆栈上
  • 从堆栈中逐个弹出值,然后按顺序输出
  • 在第二次迭代中,选择并输出非负值

或者使用deque:

  • 只对序列进行一次迭代,并且:
  • 当数值为负数时,将数值推到deque前面
  • 当数值为非负值时,将数值推到deque后面
  • 通过从前面提取值来输出deque

最新更新