我正在研究这个挑战:
给定一个按绝对值排序的整数序列,返回按其有符号值排序的序列。以下规则适用:
- 您只能在一个方向上遍历序列
- 您不能随机访问任何位置的元素:您必须从第一个元素开始并遍历
- 您可以选择任何数据结构来接受序列的输入,条件是数据结构不为您排序
如何使用O(n(时间复杂性来解决此问题?
下面是一个使用堆栈的可能算法:
- 在第一次迭代中,将负值推送到堆栈上
- 从堆栈中逐个弹出值,然后按顺序输出
- 在第二次迭代中,选择并输出非负值
或者使用deque:
- 只对序列进行一次迭代,并且:
- 当数值为负数时,将数值推到deque前面
- 当数值为非负值时,将数值推到deque后面
- 通过从前面提取值来输出deque