由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 判断linkedlist是否palindrome最优解法是什么?
相关主题
请教个面试题Max Points on a Line 最优解法是哪个?
算法要写到最优解么insert interval 最优解法是哪个?
像Longest Palindromic Substring这种题,面试的时候面试遇到自己准备过的题
请教一道Hulu的笔试题答算法题是上来就写最优解吗?
如果面试时给出的不是最优解,是否就完了?看来刷题还要兼顾brute force解法
求教,关于同时想出最优解和次优解法面试时候选那个写codeRe: leetcode第829题最优解
3sum closest哪个解法最优?G面试,拿不出最优解,写不好Code就一定挂?
请问这几道题的最优解法是什么?收到招聘启事一则……
相关话题的讨论汇总
话题: node话题: current话题: null话题: head话题: 解法
进入JobHunting版参与讨论
1 (共1页)
y******g
发帖数: 254
1
知道一个用stack的解法
时间O(n),空间n/2
最优解法是什么?
l*****a
发帖数: 14598
2
很想知道用stack的解法,展开说说吧
什么时候压栈到头开始popup呢

【在 y******g 的大作中提到】
: 知道一个用stack的解法
: 时间O(n),空间n/2
: 最优解法是什么?

l*****a
发帖数: 14598
3
难道是两个指针找到中点之后再push?

【在 l*****a 的大作中提到】
: 很想知道用stack的解法,展开说说吧
: 什么时候压栈到头开始popup呢

y******g
发帖数: 254
4
是用双指针找中点
但是一边找中点的时候就要push了
找到以后开始pop

【在 l*****a 的大作中提到】
: 难道是两个指针找到中点之后再push?
p**v
发帖数: 853
5
我觉得最好的解法是用recursion的那个,非常elegant,
而且有助于理解recursion。当然,和用stack是一个意思,
但不需要知道中点在哪。

【在 y******g 的大作中提到】
: 知道一个用stack的解法
: 时间O(n),空间n/2
: 最优解法是什么?

y******g
发帖数: 254
6
在网上搜了一下思路,然后根据思路写了recursive的C++ code
只需要七八行, 确实很简洁
不过我觉得需要在没有干扰的情况下静下心来反反复复想几遍才能想清楚,在面试的时
候,一小会不说话面试官就不耐烦了,这种干扰很大的环境下很难写好这个解法

【在 p**v 的大作中提到】
: 我觉得最好的解法是用recursion的那个,非常elegant,
: 而且有助于理解recursion。当然,和用stack是一个意思,
: 但不需要知道中点在哪。

H****r
发帖数: 2801
7
如果原linked list 可以修改那O(1)space,O(n) time 即可吧

【在 y******g 的大作中提到】
: 知道一个用stack的解法
: 时间O(n),空间n/2
: 最优解法是什么?

b******7
发帖数: 92
8
1.找到中间位置
2.将后半部分链表reverse
3.比较两段链表
4.将后半部分链表reverse,还原原链表
j**7
发帖数: 143
9
public static boolean isPalindrome( Node head)
{
if(head==null)
return false;
int length=0;
Node current=head;
Node end=null;
while(current!=null)
{
length++;
end=current;
current=current.next;
}
int mid=length/2 ;
Node midNode=head;
for(int i=0;i {
midNode=midNode.next;
}
reverse(midNode);
current=head;
Node right=end;
while(right!=null)
{
if(current.val!=right.val)
{
reverse(end);
return false;
}
current=current.next;
right=right.next;
}
reverse(end);
return true;
}
public static Node reverse(Node head)
{
if(head==null)
return null;
Node current=head;
Node prev=null;
while(current!=null)
{
Node temp=current;
current=current.next;
temp.next=prev;
prev=temp;
}
return prev;
}
public static class Node
{
int val;
Node next;
public Node(int v)
{
val=v;
}
}
l****i
发帖数: 396
10
这个需要知道list的长度吗?

【在 p**v 的大作中提到】
: 我觉得最好的解法是用recursion的那个,非常elegant,
: 而且有助于理解recursion。当然,和用stack是一个意思,
: 但不需要知道中点在哪。

l****i
发帖数: 396
11
+1

【在 b******7 的大作中提到】
: 1.找到中间位置
: 2.将后半部分链表reverse
: 3.比较两段链表
: 4.将后半部分链表reverse,还原原链表

1 (共1页)
进入JobHunting版参与讨论
相关主题
收到招聘启事一则……如果面试时给出的不是最优解,是否就完了?
刷题的问题求教,关于同时想出最优解和次优解法面试时候选那个写code
来道heard on the street上的题3sum closest哪个解法最优?
讨论一道图论题请问这几道题的最优解法是什么?
请教个面试题Max Points on a Line 最优解法是哪个?
算法要写到最优解么insert interval 最优解法是哪个?
像Longest Palindromic Substring这种题,面试的时候面试遇到自己准备过的题
请教一道Hulu的笔试题答算法题是上来就写最优解吗?
相关话题的讨论汇总
话题: node话题: current话题: null话题: head话题: 解法