Redian新闻
>
判断一个linked list是不是palindrome
avatar
判断一个linked list是不是palindrome# JobHunting - 待字闺中
b*l
1
在以下三种方法之外还有没有更好的方法?
1. 把半个linked list给reverse
2. 用stack存下一半
3. Recursion
有没有一种复杂度是O(n)且不用 extra linear storage的方法?
avatar
d*x
2
第一种不就不用extra storage嘛

【在 b*******l 的大作中提到】
: 在以下三种方法之外还有没有更好的方法?
: 1. 把半个linked list给reverse
: 2. 用stack存下一半
: 3. Recursion
: 有没有一种复杂度是O(n)且不用 extra linear storage的方法?

avatar
z*2
3
doubly linked list
avatar
l*t
4
recursion不是么
如果不算stack的话

【在 b*******l 的大作中提到】
: 在以下三种方法之外还有没有更好的方法?
: 1. 把半个linked list给reverse
: 2. 用stack存下一半
: 3. Recursion
: 有没有一种复杂度是O(n)且不用 extra linear storage的方法?

avatar
b*l
5
对,我的意思是说也不要改变linked list。不好意思,我没说清楚。
我想知道,还有没有更好的办法?如果没有的话,我觉得第二个办法,用stack相对来
说更简洁一些。

【在 d**********x 的大作中提到】
: 第一种不就不用extra storage嘛
avatar
b*l
6
这个不行,必须是singly linked list。再加一个property代价太大了。

【在 z***2 的大作中提到】
: doubly linked list
avatar
b*l
7
但是recursion本身就得用到stack啊。

【在 l*******t 的大作中提到】
: recursion不是么
: 如果不算stack的话

avatar
l*t
8
我知道,但大家很多时候不把stack当space要求的吧?

【在 b*******l 的大作中提到】
: 但是recursion本身就得用到stack啊。
avatar
b*l
9
对。但是recursion本身确实要用很多的memory。这个是我刚在网上看到的:
ADVANTAGES AND DISADVANTAGES OF RECURSION
Advantages
Although at most of the times a problem can be solved without recursion, but
in some situations in programming, it is a must to use recursion. For
example, a program to display a list of all files of the system cannot be
solved without recursion.
The recursion is very flexible in data structure like stacks, queues, linked
list and quick sort.
Using recursion, the length of the program can be reduced.
Disadvantages
It requires extra storage space. The recursive calls and automatic variables
are stored on the stack. For every recursive calls separate memory is
allocated to automatic variables with the same name.
If the programmer forgets to specify the exit condition in the recursive
function, the program will execute out of memory. In such a situation user
has to press Ctrl+ break to pause and stop the function.
The recursion function is not efficient in execution speed and time.
If possible, try to solve a problem with iteration instead of recursion.

【在 l*******t 的大作中提到】
: 我知道,但大家很多时候不把stack当space要求的吧?
avatar
g*e
10

of course it counts,

【在 l*******t 的大作中提到】
: 我知道,但大家很多时候不把stack当space要求的吧?
avatar
M*n
11
先用两个指针,一个跑的是另外的一半,一个跑到底, 知道list长度, 一个正好在一
半。
然后从头开始比较,每次中间的临时指针要跑n/2, 比较一下。。。
凑活着能用, 不需要stack啥
avatar
r*h
12
这是O(N^2)了

【在 M********n 的大作中提到】
: 先用两个指针,一个跑的是另外的一半,一个跑到底, 知道list长度, 一个正好在一
: 半。
: 然后从头开始比较,每次中间的临时指针要跑n/2, 比较一下。。。
: 凑活着能用, 不需要stack啥

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。