【发布时间】:2010-11-17 07:35:32
【问题描述】:
假设我们有一个字符串:MALAYALAM,每个字符都是每个节点的数据部分,所以我们将有一个大小为 9 的列表。我们如何知道该列表是否为回文。
约束:
- 我们不知道列表长度。
- 不要对整个列表或一半列表使用临时内存(数组或堆栈或其他列表)。使用少量临时字符是可以接受的。
- 列表修改是可以的,只要我们在操作结束时有原始列表。
我想到的解决方案很少,想与大家讨论。而且是单链表。
感谢和 Rgds, 〜卡尔文
【问题讨论】:
-
是的,已编辑。我的解决方案:采用快速和慢速 ptrs,将列表的一半反转并与另一半进行比较。并反转反转的一半,使列表看起来像原始列表。我正在寻找更好的解决方案。
-
我看到该解决方案的唯一问题是它仍然使用 O(logn) 存储。
-
@axel22,我不这么认为。原始列表的存储不被视为用于解决方案的存储。重新链接列表的一半不需要额外的存储空间。
-
@Dialeticus - 你说得对,约束说不使用 O(n) 存储,但没有提到 O(logn) 存储。不过,我同意你关于重新链接的观点,我认为这就是这个问题想要的答案。
-
@calvin,你的想法很可能就是他们想要的。干得好。
标签: linked-list