由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 大牛们帮忙,Rverse Nodes in k-Group
相关主题
delete a node in linked list请问大牛们Leetcode Reorder List 中找中间节点怎么能现场想清楚?多谢!
【我自己写的LinkedList为什么总有错?】请教一道单链表问题
删除node从list, 这个有内存泄露么,怎么释放内存,对于那个被删除的节点?看不懂这题
M家 onsite 悲剧,同胞们弄死烙印吧明天电面,求建议
如何删除 linked list 的最后一个元素 (转载)LeetCode:Partition List 哪位帮我看看, 为什么总是TLE
再问大牛们leetcode上面Linkedlist的题,Reverse Nodes in k-G谁能帮我看下insertion sort list这道题吗?
一到电面题java 链表里面dummy node 一问?谢谢
合并两个排序好的链表, 优解?请教大牛: Leetcode partition list: Time Limit Exceeded
相关话题的讨论汇总
话题: listnode话题: cur话题: begin话题: head话题: null
进入JobHunting版参与讨论
1 (共1页)
h*********o
发帖数: 230
1
Rverse Nodes in k-Group:
看了好久,没发现问题在哪儿,求大牛们过目~~
谢了!
public class Solution {
public ListNode reverseKGroup(ListNode head, int k) {
// Start typing your Java solution below
// DO NOT write main() function
if(head==null)
return null;
ListNode begin=head;
ListNode pre=null;

ListNode end=null;
while(begin!=null){
ListNode cur=begin;
for(int i=0;i cur=cur.next;
if(cur==null)
return head;
}
end=cur;
ListNode temp=cur.next;
if(pre!=null){
pre.next=end;
}
else
head=end;

ListNode connect= reverseLinkedList(begin, end);
pre=connect;
begin=temp;

}
return head;



}
private ListNode reverseLinkedList(ListNode begin, ListNode end){
ListNode pre=null;
ListNode cur=begin;
while(cur!=end){
ListNode next=cur.next;
cur.next=pre;
pre=cur;
cur=next;
}
cur.next=pre;
return begin;

}
}
l*******b
发帖数: 2586
2
不是大牛,学习中,C++写的一个。。。用指针的指针很爽,java里貌似没指针,只有
reference?
ListNode *reverseKGroup(ListNode *head, int k) {
if((k < 2) || (NULL == head)) return head;
ListNode *t = head;
int i = 1;
while((t=t->next) != NULL)
++i;
i /= k;
ListNode **h = &head;
while (i-- > 0)
h = revK(h, k);
return head;
}
ListNode **revK(ListNode **h, int k) {
ListNode *t = *h, *c = t->next;
while(--k > 0) {
t->next = c->next;
c->next = *h;
*h = c;
c = t->next;
}
return &(t->next); // This is the tail.
}
R*****i
发帖数: 2126
3
我不是大牛,也不懂java,看了一下楼主的代码,感觉没什么大问题,就是这个地方有
点问题:
if(cur==null)
return head;
==〉
if(cur==null){
pre.next = begin;
return head;
}
否则,最后一截就没有了。
R*****i
发帖数: 2126
4
我用C++测试了一下,好象没问题。
class ListNode
{
public:
int value;
ListNode *next;
ListNode(int v)
{
value = v;
next = 0;
}
};
ListNode* reverseKGroup(ListNode*, int);
ListNode* reverseLinkedList(ListNode*, ListNode*);
void main()
{
ListNode *ln = new ListNode(1);
ListNode *cur = ln;
for(int i=2; i<=11; i++)
{
ListNode *lnNew = new ListNode(i);
cur->next = lnNew;
cur = lnNew;
}
ln = reverseKGroup(ln, 4);
}
ListNode* reverseKGroup(ListNode *head, int k) {
// Start typing your Java solution below
// DO NOT write main() function
if(head==0)
return 0;
ListNode *begin=head;
ListNode *pre=0;

ListNode *end=0;
while(begin!=0){
ListNode *cur=begin;
for(int i=0;i cur=cur->next;
if(cur==0)
{
pre->next = begin;
return head;
}
}
end=cur;
ListNode *temp=cur->next;
if(pre!=0){
pre->next=end;
}
else
head=end;

ListNode *connect= reverseLinkedList(begin, end);
pre=connect;
begin=temp;

}
return head;

}
ListNode* reverseLinkedList(ListNode *begin, ListNode *end){
ListNode *pre=0;
ListNode *cur=begin;
while(cur!=end){
ListNode *next=cur->next;
cur->next=pre;
pre=cur;
cur=next;
}
cur->next=pre;
return begin;

}
h*********o
发帖数: 230
5
谢了。
好像那地方是有错。
不过java过不了large judge,总是 runtime error!
非常感谢!

【在 R*****i 的大作中提到】
: 我用C++测试了一下,好象没问题。
: class ListNode
: {
: public:
: int value;
: ListNode *next;
: ListNode(int v)
: {
: value = v;
: next = 0;

h*********o
发帖数: 230
6
check 一下 pre是不是null 再赋值!
谢~

【在 h*********o 的大作中提到】
: 谢了。
: 好像那地方是有错。
: 不过java过不了large judge,总是 runtime error!
: 非常感谢!

1 (共1页)
进入JobHunting版参与讨论
相关主题
请教大牛: Leetcode partition list: Time Limit Exceeded如何删除 linked list 的最后一个元素 (转载)
发个pure storage的interviewstreet题目再问大牛们leetcode上面Linkedlist的题,Reverse Nodes in k-G
ms面试题目一到电面题
C++ Q76: singly linked list -- 这个逆序打印有什么错?合并两个排序好的链表, 优解?
delete a node in linked list请问大牛们Leetcode Reorder List 中找中间节点怎么能现场想清楚?多谢!
【我自己写的LinkedList为什么总有错?】请教一道单链表问题
删除node从list, 这个有内存泄露么,怎么释放内存,对于那个被删除的节点?看不懂这题
M家 onsite 悲剧,同胞们弄死烙印吧明天电面,求建议
相关话题的讨论汇总
话题: listnode话题: cur话题: begin话题: head话题: null