由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 请教一道单链表问题
相关主题
一道linked list编程题【我自己写的LinkedList为什么总有错?】
感觉今天结结实实被烙印阴了大牛们帮忙,Rverse Nodes in k-Group
M家 onsite 悲剧,同胞们弄死烙印吧看不懂这题
再问大牛们leetcode上面Linkedlist的题,Reverse Nodes in k-G明天电面,求建议
题目: iterative binary tree post order traversal删除node从list, 这个有内存泄露么,怎么释放内存,对于那个被删除的节点?
reverse链表java 链表里面dummy node 一问?谢谢
Reverse LinkedList II 怎样一遍写对啊?帮忙看一段小程序有没问题,谢谢
leetcode Sort Listreverse linked list 问题, double 和 single 的不同
相关话题的讨论汇总
话题: node话题: null话题: head话题: next话题: prev
进入JobHunting版参与讨论
1 (共1页)
r******3
发帖数: 221
1
Given a sorted linked list, delete all duplicate numbers, leave only
distinct numbers from original list. e.g., given 1->2->3->3->4->4->5, return
1->2->5. Given 1->1->1->2->3, return 2->3.
要求扫一遍,O(1) space。
p*****2
发帖数: 21240
2
import java.io.*;
import java.util.*;
public class test3
{
public static void main(String[] args) throws Exception
{
new test3().run();
}
PrintWriter out = null;
void print(Node head)
{
while (head != null)
{
out.print(head.value + " ");
head = head.next;
}
out.println();
}
Node remove(Node head)
{
Node prev = head;
head = null;
Node pp = null;
while (prev != null)
{
Node next = prev.next;
while (next != null && next.value == prev.value)
next = next.next;
if (next == prev.next)
{
if (head == null)
{
head = prev;
pp = head;
}
else
{
pp.next = prev;
pp = prev;
}
}
prev = next;
}
return head;
}
void run() throws Exception
{
Scanner in = new Scanner(System.in);
out = new PrintWriter(System.out);
int[][] arr = new int[][]
{
{ 1, 2, 3, 3, 4, 4, 5 },
{ 1, 1, 1, 2, 3 } };
for (int k = 0; k < arr.length; k++)
{
Node head = null;
Node prev = null;
for (int i : arr[k])
{
Node node = new Node(i);
if (head == null)
head = node;
else
prev.next = node;
prev = node;
}
print(head);
head = remove(head);
print(head);
}
out.close();
}
}
class Node
{
int value;
Node next;
public Node(int v)
{
value = v;
}
}
C***U
发帖数: 2406
3
用两个指针就可以了吧

return

【在 r******3 的大作中提到】
: Given a sorted linked list, delete all duplicate numbers, leave only
: distinct numbers from original list. e.g., given 1->2->3->3->4->4->5, return
: 1->2->5. Given 1->1->1->2->3, return 2->3.
: 要求扫一遍,O(1) space。

m*****k
发帖数: 731
4
result_head=null;
result_tail=null;
candidate=head;
candidate_good = true;
to-check=head.next;
while(to-check!=null)
{
if(to-check.value==candidate.value)
{
candidate_good = false;
}
else
{
if(candidate_good)
{
append_candiate_to_result();
//reset candiate
candidate = to_check;
candidate_good = true;
}
}

to-check = to-check.next;
}
if(candidate_good )
{
append_candiate_to_result()
}
return result_head ;
------------------------------------------------------
void append_candiate_to_result()
{
if(result_tail==null)
{
result_head = candidate;
result_tail = candidate;
}
else
{
result_tail.next = candidate;
result_tail= candidate;
}
}
h****e
发帖数: 928
5
public static void remove_duplicates(Node head) {
if (head==null || head.next==null) {
return;
}
int data = head.data;
Node previous = head;
Node current = head.next;
while (current!=null) {
if (data==current.data) {
current = current.next;
previous.next = current;
} else {
data = current.data;
previous = current;
current = current.next;
}
}
}
r****k
发帖数: 21
6
顺手写了一下,调试一堆bug,汗...
好多workaround.
Node * deleteDuplicate(Node *head)
{
if (head == NULL) return NULL;

Node *p = head;
Node *q = p->next;
if (q == NULL)
return head;
Node *last = NULL;
head = last;

while (q != NULL)
{
if (p->data != q->data)
{
if (last == NULL)
{
head = last = p;
}
else
{
last->next = p;
last = p;
}
p = p->next;
q = q->next;
}
else
{
while (q->next != NULL && q->next->data == p->data)
q = q->next;
q = q->next;
while (p != q)
{
Node *del = p;
p = p->next;
delete(del);
}
if (q != NULL)
q = q->next;
}
}
if ( q == NULL && p != NULL)
{
if (last == NULL)
{
head = last = p;
}
else
{
last->next = p;
last = p;
}
}
if (last != NULL)
{
last->next = NULL;
}

return head;
}
n****r
发帖数: 120
7
楼上的代码有明显的BUG!

【在 h****e 的大作中提到】
: public static void remove_duplicates(Node head) {
: if (head==null || head.next==null) {
: return;
: }
: int data = head.data;
: Node previous = head;
: Node current = head.next;
: while (current!=null) {
: if (data==current.data) {
: current = current.next;

n****r
发帖数: 120
8
public static void removeDuplicats(Node x){
if(x == null || x.next == null) return;

Node cur = x;
while(cur != null && cur.next != null){
Node next = cur.next;
while(cur.value == next.value){
next = next.next;
if(next == null)
break;
}
cur.next = next;
cur = next;

}
}
l*********8
发帖数: 4642
9
Node * DeleteDuplicates(Node * head)
{
if (!head) return head;
Node tmpHead;
tmpHead.next = head;
Node *prev, *cur, *p;
prev = &tmpHead;

do {
bool isUnique = true;
cur = prev->next;
p = cur->next;
while(p && p->val == cur->val) {
isUnique = false;
cur->next = p->next;
delete p;
p = cur->next;
}
if (isUnique) {
prev = cur;
} else {
prev->next = cur->next;
delete cur;
}
}while(prev->next);
return tmpHead.next;
}
m*****g
发帖数: 226
10
void removeDuplicated(node* ll)
{
if(!ll) return;
if(!ll->next) return;
node* ptr1, ptr2;
ptr1 = ll;
ptr2 = ptr1->next;
while(1)
{
if(ptr1->v == ptr2->v)
{
while(ptr1->v == ptr2->v)
{
node* ptr3 = ptr2->next;
llDeleteNode(ll,ptr3);
ptr2 = ptr3;
if(!ptr2) break;
}
llDeleteNode(ll, ptr1);
if(!ptr2) return;
if(!ptr2->next) return;
ptr1 = ptr2;
ptr2 = ptr2->next;
}
}
}
相关主题
reverse链表【我自己写的LinkedList为什么总有错?】
Reverse LinkedList II 怎样一遍写对啊?大牛们帮忙,Rverse Nodes in k-Group
leetcode Sort List看不懂这题
进入JobHunting版参与讨论
g**x
发帖数: 373
11
What about the case:
->1->2->2->3->3->3->2->1->1->5?
Is the return supposed to be
->5 ?

return

【在 r******3 的大作中提到】
: Given a sorted linked list, delete all duplicate numbers, leave only
: distinct numbers from original list. e.g., given 1->2->3->3->4->4->5, return
: 1->2->5. Given 1->1->1->2->3, return 2->3.
: 要求扫一遍,O(1) space。

l*********8
发帖数: 4642
12
the list is already sorted.

【在 g**x 的大作中提到】
: What about the case:
: ->1->2->2->3->3->3->2->1->1->5?
: Is the return supposed to be
: ->5 ?
:
: return

g**x
发帖数: 373
13
Thanks. My bad.

【在 l*********8 的大作中提到】
: the list is already sorted.
l*****a
发帖数: 14598
14
一看就是死循环。
细节都不用看

【在 m*****g 的大作中提到】
: void removeDuplicated(node* ll)
: {
: if(!ll) return;
: if(!ll->next) return;
: node* ptr1, ptr2;
: ptr1 = ll;
: ptr2 = ptr1->next;
: while(1)
: {
: if(ptr1->v == ptr2->v)

p*****2
发帖数: 21240
15

牛。我发现我看别人程序很弱

【在 l*****a 的大作中提到】
: 一看就是死循环。
: 细节都不用看

h****e
发帖数: 928
16
可以举出反例吗?我试了几种情况都没有错。
我的做法是看到一个重复的结点就跳过去,而不是一批一批地跳。
这样只要用一层while循环就可以了,还减少了需要的边界条件
检查。

【在 n****r 的大作中提到】
: 楼上的代码有明显的BUG!
Z*****Z
发帖数: 723
17
1,1,2,你会返回1,2,因为你不改head

【在 h****e 的大作中提到】
: 可以举出反例吗?我试了几种情况都没有错。
: 我的做法是看到一个重复的结点就跳过去,而不是一批一批地跳。
: 这样只要用一层while循环就可以了,还减少了需要的边界条件
: 检查。

h****e
发帖数: 928
18
Sorry,题目理解错了。 :(

【在 Z*****Z 的大作中提到】
: 1,1,2,你会返回1,2,因为你不改head
O*******d
发帖数: 20343
19
一个指针就可以了。 每走一步,把当前值和前一个值比较,如果相同,把当前值删掉
。 如果不同,把当前值做一个copy,下一步时和这个值比较。

【在 C***U 的大作中提到】
: 用两个指针就可以了吧
:
: return

O*******d
发帖数: 20343
20
关键词 “sorted”

【在 g**x 的大作中提到】
: What about the case:
: ->1->2->2->3->3->3->2->1->1->5?
: Is the return supposed to be
: ->5 ?
:
: return

相关主题
明天电面,求建议帮忙看一段小程序有没问题,谢谢
删除node从list, 这个有内存泄露么,怎么释放内存,对于那个被删除的节点?reverse linked list 问题, double 和 single 的不同
java 链表里面dummy node 一问?谢谢leetcode过的一代工程师
进入JobHunting版参与讨论
p*****2
发帖数: 21240
21

are you sure? sounds not right.

【在 O*******d 的大作中提到】
: 一个指针就可以了。 每走一步,把当前值和前一个值比较,如果相同,把当前值删掉
: 。 如果不同,把当前值做一个copy,下一步时和这个值比较。

h****e
发帖数: 928
22
再试一次。这次给出的是递归的解法。
public static Node remove_all(Node head) {
if (head==null || head.next==null) {
return head;
}
int data = head.data;
Node current = head.next;
if (data==current.data) {
do {
current = current.next;
} while (current!=null && current.data == data);
if (current==null) {
return current;
}
return remove_all(current);
}
Node next = remove_all(current);
head.next = next;
return head;
}
l*****a
发帖数: 14598
23
主要是他这个太明显了。。

【在 p*****2 的大作中提到】
:
: are you sure? sounds not right.

Z*****Z
发帖数: 723
24
cool,觉得这次对了

【在 h****e 的大作中提到】
: 再试一次。这次给出的是递归的解法。
: public static Node remove_all(Node head) {
: if (head==null || head.next==null) {
: return head;
: }
: int data = head.data;
: Node current = head.next;
: if (data==current.data) {
: do {
: current = current.next;

h**l
发帖数: 168
25
LinkedListNode* removeDup(LinkedListNode* head)
{
if(head == NULL) return head;
LinkedListNode* prev, *current, *next;
prev = head;
current = head;
next = current->next;
bool FirstUnique = true;
while (next!=NULL)
{
while(next->value == current->value)
{
next = next->next;
if(next == NULL) break;
}
if(next == current->next)
{
if(FirstUnique)
{
head = current;
FirstUnique = false;
}
prev = current;
}
else
{
prev->next = next;
}
current = next;
if(current == NULL) break;
next = current->next;
}
if(FirstUnique) head = current;
return head;
}

return

【在 r******3 的大作中提到】
: Given a sorted linked list, delete all duplicate numbers, leave only
: distinct numbers from original list. e.g., given 1->2->3->3->4->4->5, return
: 1->2->5. Given 1->1->1->2->3, return 2->3.
: 要求扫一遍,O(1) space。

h****e
发帖数: 928
26
多谢!

【在 Z*****Z 的大作中提到】
: cool,觉得这次对了
p*****2
发帖数: 21240
27

这题上了leetcode的OJ,你可以上边再run一下。这样就会很有信心了。

【在 h****e 的大作中提到】
: 多谢!
l*********8
发帖数: 4642
28
北京二爷,你的程序有bug
try {1, 2, 2}

【在 p*****2 的大作中提到】
: import java.io.*;
: import java.util.*;
: public class test3
: {
: public static void main(String[] args) throws Exception
: {
: new test3().run();
: }
: PrintWriter out = null;
: void print(Node head)

p*****2
发帖数: 21240
29

多谢。得出去一下。回来调一下。这好像是很多题都容易出的bug。

【在 l*********8 的大作中提到】
: 北京二爷,你的程序有bug
: try {1, 2, 2}

p*****2
发帖数: 21240
30

更新了一下。确实是个常见的问题。昨天做另外一题也出线这问题了。还是得小心。

【在 p*****2 的大作中提到】
:
: 多谢。得出去一下。回来调一下。这好像是很多题都容易出的bug。

相关主题
c/c++ double pointer研究感觉今天结结实实被烙印阴了
Reverse Linked list 用java实现M家 onsite 悲剧,同胞们弄死烙印吧
一道linked list编程题再问大牛们leetcode上面Linkedlist的题,Reverse Nodes in k-G
进入JobHunting版参与讨论
l*********8
发帖数: 4642
31
目前,leetcode上这道题目的OJ的expected output还有很多错误的。希望leetcode更新一
下。谢谢!

【在 p*****2 的大作中提到】
:
: 更新了一下。确实是个常见的问题。昨天做另外一题也出线这问题了。还是得小心。

m*****k
发帖数: 731
32
1 -> 1
so you have 1?

【在 O*******d 的大作中提到】
: 一个指针就可以了。 每走一步,把当前值和前一个值比较,如果相同,把当前值删掉
: 。 如果不同,把当前值做一个copy,下一步时和这个值比较。

p*****2
发帖数: 21240
33

更新一
是吗?我还没run过。其实不OJ一下真的没有信心。

【在 l*********8 的大作中提到】
: 目前,leetcode上这道题目的OJ的expected output还有很多错误的。希望leetcode更新一
: 下。谢谢!

l*********8
发帖数: 4642
34
我的意思是, 目前OJ上的答案本身是错的 :-)
你改过后的程序还有一个小bug, 除此之外应该就没问题了:)

【在 p*****2 的大作中提到】
:
: 更新一
: 是吗?我还没run过。其实不OJ一下真的没有信心。

h****e
发帖数: 928
35
谢谢。LeetCode加得好快。

【在 p*****2 的大作中提到】
:
: 更新一
: 是吗?我还没run过。其实不OJ一下真的没有信心。

p*****2
发帖数: 21240
36

我知道你的意思。
还有啥bug呢?指点一下吧。OJ能发现吗?我晚上OJ一下。

【在 l*********8 的大作中提到】
: 我的意思是, 目前OJ上的答案本身是错的 :-)
: 你改过后的程序还有一个小bug, 除此之外应该就没问题了:)

l*********8
发帖数: 4642
37
输入空链表的时候,你的这句会crash.
pp.next = null;

【在 p*****2 的大作中提到】
:
: 我知道你的意思。
: 还有啥bug呢?指点一下吧。OJ能发现吗?我晚上OJ一下。

p*****2
发帖数: 21240
38

明白了。得加个判断。多谢。刚才有点着急修改。我觉得你可真牛,看别人代码这么仔
细。我一般都不怎么看别人代码。看也只是看个思路。

【在 l*********8 的大作中提到】
: 输入空链表的时候,你的这句会crash.
: pp.next = null;

h****e
发帖数: 928
39
真的是不上版上来让大牛检查一下,或者到OJ上过一遍,
自己错了都不知道。:)
l*********8
发帖数: 4642
40
我一点儿也不牛。你程序一开始的bug比较隐蔽,我开始没看出来。 后来加了些test
cases跑了之后才发现的。
你后来出现的bug比较容易看出来。你改的急了才出这个错的。

【在 p*****2 的大作中提到】
:
: 明白了。得加个判断。多谢。刚才有点着急修改。我觉得你可真牛,看别人代码这么仔
: 细。我一般都不怎么看别人代码。看也只是看个思路。

相关主题
再问大牛们leetcode上面Linkedlist的题,Reverse Nodes in k-GReverse LinkedList II 怎样一遍写对啊?
题目: iterative binary tree post order traversalleetcode Sort List
reverse链表【我自己写的LinkedList为什么总有错?】
进入JobHunting版参与讨论
i**********e
发帖数: 1145
41
我还没加这道题吧,现在正在加。
对了,还有什么题目 test case 你发现有错误的?

【在 l*********8 的大作中提到】
: 我的意思是, 目前OJ上的答案本身是错的 :-)
: 你改过后的程序还有一个小bug, 除此之外应该就没问题了:)

l*********8
发帖数: 4642
42
我是用Remove Duplicates II 来做online judge的。 (把输入输出转换了一下)
刚才我才发现我想当然地以为, 既然Remove Duplicates是重复的数字只保留一次,那么
Remove Duplicates II 就是把重复的数字全部删除。。。。而实际上,Remove Duplicates
II是说一个数字最多重复两次。 ⊙﹏⊙b汗

【在 i**********e 的大作中提到】
: 我还没加这道题吧,现在正在加。
: 对了,还有什么题目 test case 你发现有错误的?

i**********e
发帖数: 1145
43
这道题不同,是删除所有出现超过一次的元素,而不是去重。
如果单单只是去重的话会比较容易一些。
北京二爷,你的bug修改了没?

那么
Duplicates

【在 l*********8 的大作中提到】
: 我是用Remove Duplicates II 来做online judge的。 (把输入输出转换了一下)
: 刚才我才发现我想当然地以为, 既然Remove Duplicates是重复的数字只保留一次,那么
: Remove Duplicates II 就是把重复的数字全部删除。。。。而实际上,Remove Duplicates
: II是说一个数字最多重复两次。 ⊙﹏⊙b汗

i**********e
发帖数: 1145
44
刚加了这道题进 OJ,题目名字叫 “Remove Duplicates from Sorted List II”,大
家可以测一下程序。
只测了 longway2008 和 hackie 的程序,都是正确的。
Z*****Z
发帖数: 723
45
Orz 赞!
搭车问可不可以请求加上直方图下最大矩形面积这题

【在 i**********e 的大作中提到】
: 刚加了这道题进 OJ,题目名字叫 “Remove Duplicates from Sorted List II”,大
: 家可以测一下程序。
: 只测了 longway2008 和 hackie 的程序,都是正确的。

i**********e
发帖数: 1145
46
哦,那道题很难啊,我尽量尝试看看能不能今天加上去。
谢谢你的建议!

【在 Z*****Z 的大作中提到】
: Orz 赞!
: 搭车问可不可以请求加上直方图下最大矩形面积这题

d**e
发帖数: 6098
47
你真是勤快,星期天还工作... :)

【在 i**********e 的大作中提到】
: 哦,那道题很难啊,我尽量尝试看看能不能今天加上去。
: 谢谢你的建议!

i**********e
发帖数: 1145
48
人生苦短,现在不勤快,老了就勤快不动了。

【在 d**e 的大作中提到】
: 你真是勤快,星期天还工作... :)
l*********8
发帖数: 4642
49
赞!
动作很快啊

【在 i**********e 的大作中提到】
: 刚加了这道题进 OJ,题目名字叫 “Remove Duplicates from Sorted List II”,大
: 家可以测一下程序。
: 只测了 longway2008 和 hackie 的程序,都是正确的。

w**z
发帖数: 8232
50
面试的时候,对这样的题会要求写出没bug的程序?是白板coding,面试的人也不一定
读了你的code就能发现bug。
在工作中,遇到这样的东东,会象OJ那样写很多unit test的,一般不会用眼睛debug吧。

那么
Duplicates

【在 l*********8 的大作中提到】
: 我是用Remove Duplicates II 来做online judge的。 (把输入输出转换了一下)
: 刚才我才发现我想当然地以为, 既然Remove Duplicates是重复的数字只保留一次,那么
: Remove Duplicates II 就是把重复的数字全部删除。。。。而实际上,Remove Duplicates
: II是说一个数字最多重复两次。 ⊙﹏⊙b汗

相关主题
大牛们帮忙,Rverse Nodes in k-Group删除node从list, 这个有内存泄露么,怎么释放内存,对于那个被删除的节点?
看不懂这题java 链表里面dummy node 一问?谢谢
明天电面,求建议帮忙看一段小程序有没问题,谢谢
进入JobHunting版参与讨论
k*****y
发帖数: 744
51
ListNode *deleteDuplicate(ListNode *head){
ListNode *newHead = NULL, *newLast = NULL;
ListNode *next;
while(head){
next = head->next;
while(next && next->val == head->val) next = next->next;
if(next == head->next){
if( newLast ){
newLast->next = new ListNode(head->val);
newLast = newLast->next;
}
else
newHead = newLast = new ListNode(head->val);
}
head = next;
}
return newHead;
}
z****h
发帖数: 164
52
public ListNode deleteDuplicates(ListNode head) {
// Start typing your Java solution below
// DO NOT write main() function
if(head == null || head.next == null) return head;
ListNode curr = head;
ListNode pre = null;
boolean isdup = false;
while(curr.next != null)
{
if(curr.val == curr.next.val){
isdup = true;
curr.next = curr.next.next;
}else
{
if(isdup == true)
{
if(pre == null)
{
head = curr.next;
curr = head;
}else
{
pre.next = curr.next;
curr = pre.next;
}
isdup = false;
}else{
pre = curr;
curr = curr.next;
}
}
}
if(isdup)
{
if(pre != null)
pre.next = null;
else head = null;
}
return head;
}
s******o
发帖数: 2233
53
Node*
GetNextNondupNode(Node* node) {
if (!node || !node->next_ ||
node->data_ != node->next_->data_) {
return node;
}
while (node && node->next_ &&
node->data_ == node->next_->data_) {
Node* tmp = node;
node = node->next_;
delete tmp;
}
node = node->next_;
return GetNextNondupNode(node);
}
Node*
RemoveDup(Node* head) {
head = GetNextNondupNode(head);
if (!head) {
return NULL;
Node* prev = head;
while (Node* node = prev->next_) {
node = GetNextNondupNode(node);
prev->next_ = node;
prev = node;
}
return head;
}

return

【在 r******3 的大作中提到】
: Given a sorted linked list, delete all duplicate numbers, leave only
: distinct numbers from original list. e.g., given 1->2->3->3->4->4->5, return
: 1->2->5. Given 1->1->1->2->3, return 2->3.
: 要求扫一遍,O(1) space。

l*****a
发帖数: 14598
54
为什么data member的命名都是最后加个_
这是什么风格?

【在 s******o 的大作中提到】
: Node*
: GetNextNondupNode(Node* node) {
: if (!node || !node->next_ ||
: node->data_ != node->next_->data_) {
: return node;
: }
: while (node && node->next_ &&
: node->data_ == node->next_->data_) {
: Node* tmp = node;
: node = node->next_;

s******o
发帖数: 2233
55
http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml?

【在 l*****a 的大作中提到】
: 为什么data member的命名都是最后加个_
: 这是什么风格?

l*y
发帖数: 21010
56
太丑了。。

【在 s******o 的大作中提到】
: http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml?
l*****a
发帖数: 14598
57
oh
hoho

【在 s******o 的大作中提到】
: http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml?
l*****a
发帖数: 14598
58
总感觉有些不太简洁。。。。
前面hackie的那个挺好。。。

【在 s******o 的大作中提到】
: Node*
: GetNextNondupNode(Node* node) {
: if (!node || !node->next_ ||
: node->data_ != node->next_->data_) {
: return node;
: }
: while (node && node->next_ &&
: node->data_ == node->next_->data_) {
: Node* tmp = node;
: node = node->next_;

d**e
发帖数: 6098
59
似乎我们都是习惯写前面的。。。

【在 s******o 的大作中提到】
: http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml?
d**e
发帖数: 6098
60
人生苦短,不是应该及时行乐吗?
不过写code就是你的快乐源泉 :p

【在 i**********e 的大作中提到】
: 人生苦短,现在不勤快,老了就勤快不动了。
相关主题
reverse linked list 问题, double 和 single 的不同Reverse Linked list 用java实现
leetcode过的一代工程师一道linked list编程题
c/c++ double pointer研究感觉今天结结实实被烙印阴了
进入JobHunting版参与讨论
s******o
发帖数: 2233
61
每个公司都有自己的style guide,只要自己的code base consistent就好了。。。

【在 d**e 的大作中提到】
: 似乎我们都是习惯写前面的。。。
O*******d
发帖数: 20343
62
给你一个C++的例子
void removeDuplicates(list& sortedList)
{
if(sortedList.size() > 0)
{
list::iterator it = sortedList.begin();
// Set to a value that is not the first value to prevent deleting
the first value
int previous = *sortedList.begin() + 1;
while(it != sortedList.end())
{
if(*it == previous)
{
it = sortedList.erase(it);
}
else
{
previous = *it;
++it;
}
}
}
}
那个iterator尽管不是真正意义上的指针,但在这里使用,相当于指针。 一个就够用
了。

【在 p*****2 的大作中提到】
:
: 明白了。得加个判断。多谢。刚才有点着急修改。我觉得你可真牛,看别人代码这么仔
: 细。我一般都不怎么看别人代码。看也只是看个思路。

s******o
发帖数: 2233
63
stl::list is doubly-linked list

【在 O*******d 的大作中提到】
: 给你一个C++的例子
: void removeDuplicates(list& sortedList)
: {
: if(sortedList.size() > 0)
: {
: list::iterator it = sortedList.begin();
: // Set to a value that is not the first value to prevent deleting
: the first value
: int previous = *sortedList.begin() + 1;
: while(it != sortedList.end())

O*******d
发帖数: 20343
64
在我的码中,那个iterator只往前走,不后退,就跟单链一样。

【在 s******o 的大作中提到】
: stl::list is doubly-linked list
s******o
发帖数: 2233
65
for std::slist, erase is O(N) operation

【在 O*******d 的大作中提到】
: 在我的码中,那个iterator只往前走,不后退,就跟单链一样。
l*****a
发帖数: 14598
66
你运行过吗?
what does *sortedList mean?

【在 O*******d 的大作中提到】
: 给你一个C++的例子
: void removeDuplicates(list& sortedList)
: {
: if(sortedList.size() > 0)
: {
: list::iterator it = sortedList.begin();
: // Set to a value that is not the first value to prevent deleting
: the first value
: int previous = *sortedList.begin() + 1;
: while(it != sortedList.end())

p*****2
发帖数: 21240
67

刚回来。改了,刚刚OJ过了。

【在 i**********e 的大作中提到】
: 这道题不同,是删除所有出现超过一次的元素,而不是去重。
: 如果单单只是去重的话会比较容易一些。
: 北京二爷,你的bug修改了没?
:
: 那么
: Duplicates

d**e
发帖数: 6098
68
这个好像是将duplicate删成1个
比如1->1->2出来是1->2,而不是将全部1删掉?
但很喜欢你的previous初始化
我想如果用一个指针的话,可能可以用node->next和node->next->next

【在 O*******d 的大作中提到】
: 给你一个C++的例子
: void removeDuplicates(list& sortedList)
: {
: if(sortedList.size() > 0)
: {
: list::iterator it = sortedList.begin();
: // Set to a value that is not the first value to prevent deleting
: the first value
: int previous = *sortedList.begin() + 1;
: while(it != sortedList.end())

i**********e
发帖数: 1145
69
刚把这题加进 OJ 里了,解法还挺多的。
brute force 的 O(N^2) 应该是过不了 large tests 的。
"Largest Rectangle in Histogram"
Given n non-negative integers representing the histogram's bar height where
the width of each bar is 1, find the area of largest rectangle in the
histogram.
Above is a histogram where width of each bar is 1, given height = [2,1,5,6,2
,3].
The largest rectangle is shown in the shaded area, which has area = 10 unit.
For example,
Given height = [2,1,5,6,2,3],
return 10.

【在 Z*****Z 的大作中提到】
: Orz 赞!
: 搭车问可不可以请求加上直方图下最大矩形面积这题

p*****2
发帖数: 21240
70
这题想了想还没太好思路 面是肯定挂

刚把这题加进 OJ 里了,解法还挺多的。brute force 的 O(N^2) 应该是过不了 large
tests 的。"Largest Rectangle in Hist........
★ Sent from iPhone App: iReader Mitbbs Lite 7.52

【在 i**********e 的大作中提到】
: 刚把这题加进 OJ 里了,解法还挺多的。
: brute force 的 O(N^2) 应该是过不了 large tests 的。
: "Largest Rectangle in Histogram"
: Given n non-negative integers representing the histogram's bar height where
: the width of each bar is 1, find the area of largest rectangle in the
: histogram.
: Above is a histogram where width of each bar is 1, given height = [2,1,5,6,2
: ,3].
: The largest rectangle is shown in the shaded area, which has area = 10 unit.
: For example,

相关主题
感觉今天结结实实被烙印阴了题目: iterative binary tree post order traversal
M家 onsite 悲剧,同胞们弄死烙印吧reverse链表
再问大牛们leetcode上面Linkedlist的题,Reverse Nodes in k-GReverse LinkedList II 怎样一遍写对啊?
进入JobHunting版参与讨论
p*****2
发帖数: 21240
71
想了一个nlongn的,过了小数据,大数据runtime error.
int max = 0;
public int largestRectangleArea(int[] height)
{
max = 0;
find(height, 0, height.length - 1);
return max;
}
void find(int[] height, int x, int y)
{
int lowest = Integer.MAX_VALUE;
for (int i = x; i <= y; i++)
lowest = Math.min(lowest, height[i]);
max = Math.max(max, lowest * (y - x + 1));
int prev = x;
int i = x;
while (prev <= y && i <= y)
{
while (prev <= y && height[prev] == lowest)
prev++;
if(prev>y)
break;
i = prev + 1;
while (i <= y && height[i] != lowest)
i++;
find(height, prev, i - 1);
prev = i;
}
}

where
,2
unit.

【在 i**********e 的大作中提到】
: 刚把这题加进 OJ 里了,解法还挺多的。
: brute force 的 O(N^2) 应该是过不了 large tests 的。
: "Largest Rectangle in Histogram"
: Given n non-negative integers representing the histogram's bar height where
: the width of each bar is 1, find the area of largest rectangle in the
: histogram.
: Above is a histogram where width of each bar is 1, given height = [2,1,5,6,2
: ,3].
: The largest rectangle is shown in the shaded area, which has area = 10 unit.
: For example,

k*****y
发帖数: 744
72
Maintain the increasing subsequence ending at current position. Should run
in O(n) time.
int largestRectangleArea( vector &height ){
stack< pair > st;
st.push( make_pair(-1, 0) );
int ans = 0;
for( int ith=0; ith int pos = ith;
while(1){
pair &top = st.top();
if(top.second > height[ith] ){
pos = top.first;
ans = max( ans, top.second*(ith - pos) );
st.pop();
}
else{
if(top.second < height[ith])
st.push( make_pair( pos, height[ith] ) );
break;
}
}
}
while( !st.empty() ){
pair &top = st.top();
ans = max( ans, top.second*(int(height.size()) - top.first) );
st.pop();
}
return ans;
}

where
,2
unit.

【在 i**********e 的大作中提到】
: 刚把这题加进 OJ 里了,解法还挺多的。
: brute force 的 O(N^2) 应该是过不了 large tests 的。
: "Largest Rectangle in Histogram"
: Given n non-negative integers representing the histogram's bar height where
: the width of each bar is 1, find the area of largest rectangle in the
: histogram.
: Above is a histogram where width of each bar is 1, given height = [2,1,5,6,2
: ,3].
: The largest rectangle is shown in the shaded area, which has area = 10 unit.
: For example,

i**********e
发帖数: 1145
73
你的最后第二 large test case stack overflow 了,是递归造成的。
n = 20000,
height = [0, 1, 2, ... 19999]

【在 p*****2 的大作中提到】
: 想了一个nlongn的,过了小数据,大数据runtime error.
: int max = 0;
: public int largestRectangleArea(int[] height)
: {
: max = 0;
: find(height, 0, height.length - 1);
: return max;
: }
: void find(int[] height, int x, int y)
: {

Z*****Z
发帖数: 723
74
大赞,多谢!

where
,2
unit.

【在 i**********e 的大作中提到】
: 刚把这题加进 OJ 里了,解法还挺多的。
: brute force 的 O(N^2) 应该是过不了 large tests 的。
: "Largest Rectangle in Histogram"
: Given n non-negative integers representing the histogram's bar height where
: the width of each bar is 1, find the area of largest rectangle in the
: histogram.
: Above is a histogram where width of each bar is 1, given height = [2,1,5,6,2
: ,3].
: The largest rectangle is shown in the shaded area, which has area = 10 unit.
: For example,

b******u
发帖数: 81
75
public static Node RemoveDuplicates(Node node)
{
Node result = null, resultCurrent = null, current = node;
bool skipCurrent = false;
while (current != null )
{
if (current.Next != null && current.Num == current.Next.Num)
{
skipCurrent = true;
}
else
{
if (!skipCurrent)
{
if (result == null)
{
result = current;
resultCurrent = current;
}
else
{
resultCurrent.Next = current;
resultCurrent = resultCurrent.Next;
}
}
skipCurrent = false;
}
current = current.Next;
}
resultCurrent.Next = null;
return result;
}
p*****2
发帖数: 21240
76

这题有O(n)的解是吧?

【在 i**********e 的大作中提到】
: 你的最后第二 large test case stack overflow 了,是递归造成的。
: n = 20000,
: height = [0, 1, 2, ... 19999]

i**********e
发帖数: 1145
77
是的,用stack解,很隐含。
这道题你真正理解怎么用 stack 做的话,可以解很多类似这种的题目,思路都
是类似:
maximal rectangle of 1's in a binary matrix
直方图盛水
largest distance j-i such that A[i] < A[j].

【在 p*****2 的大作中提到】
:
: 这题有O(n)的解是吧?

p*****2
发帖数: 21240
78

痛苦呀。手上还有好几道题没有做对。现在脑子全乱了。这两天做题错多,对少。

【在 i**********e 的大作中提到】
: 是的,用stack解,很隐含。
: 这道题你真正理解怎么用 stack 做的话,可以解很多类似这种的题目,思路都
: 是类似:
: maximal rectangle of 1's in a binary matrix
: 直方图盛水
: largest distance j-i such that A[i] < A[j].

H*******g
发帖数: 6997
79
List inputSet = new List();
inputSet .Add(1);
inputSet .Add(1);
inputSet .Add(2);
inputSet .Add(3);
inputSet .Add(3);
inputSet .Add(5);
var duplicates = inputSet
.GroupBy(i => i)
.Where(g => g.Count() > 1)
.Select(g => g.Key);
var result = inputSet.Except(duplicates).OrderBy(x=>x);
真受不了楼上的。。。这么简单的一个题目,弄的那么多行干嘛啊。。。这都是啥年代的代码了?
b******u
发帖数: 81
80
真搞不懂奥运会,100 米跑什么跑的,搞部汽车,谁能跑得过?

真受不了楼上的。。。这么简单的一个题目,弄的那么多行干嘛啊。。。这都是啥年代
的代码了?

【在 H*******g 的大作中提到】
: List inputSet = new List();
: inputSet .Add(1);
: inputSet .Add(1);
: inputSet .Add(2);
: inputSet .Add(3);
: inputSet .Add(3);
: inputSet .Add(5);
: var duplicates = inputSet
: .GroupBy(i => i)
: .Where(g => g.Count() > 1)

相关主题
leetcode Sort List看不懂这题
【我自己写的LinkedList为什么总有错?】明天电面,求建议
大牛们帮忙,Rverse Nodes in k-Group删除node从list, 这个有内存泄露么,怎么释放内存,对于那个被删除的节点?
进入JobHunting版参与讨论
H*******g
发帖数: 6997
81
哈哈,也是,多写几行好忽悠老板。反正我就是一行搞定。截图上2行是为了好看而已。不如您也给个1
行代码的解决方法吧?

【在 b******u 的大作中提到】
: 真搞不懂奥运会,100 米跑什么跑的,搞部汽车,谁能跑得过?
:
: 真受不了楼上的。。。这么简单的一个题目,弄的那么多行干嘛啊。。。这都是啥年代
: 的代码了?

i**********e
发帖数: 1145
82
你每次以最低点来当 pivot,分成左右两块直方图。
当数组为递升的情况下,每次分的都是左边为空,而右边 n-1 个 bar。
这样的话可是 O(n^2)。
如果数组是递升/递减的情况之下,会导致不断递归 n-1 层深。如果n很大的话就
stack overflow 了。

【在 p*****2 的大作中提到】
: 想了一个nlongn的,过了小数据,大数据runtime error.
: int max = 0;
: public int largestRectangleArea(int[] height)
: {
: max = 0;
: find(height, 0, height.length - 1);
: return max;
: }
: void find(int[] height, int x, int y)
: {

t**********h
发帖数: 2273
83
public static void main(String[] args){
Node n1 = new Node(1);
Node n2 = new Node(2);
Node n3 = new Node(3);
Node n4 = new Node(3);
Node n5 = new Node(3);
Node n6 = new Node(4);
Node n7 = new Node(4);
Node n8 = new Node(5);


n1.next = n2;
n2.next = n3;
n3.next = n4;
n4.next = n5;
n5.next = n6;
n6.next = n7;
n7.next = n8;

Node result = remove(n1);
while(result != null){
System.out.print(result.value + " -> ");
result = result.next;
}

}

public static Node remove(Node head){
if(head == null) return null;

Stack s = new Stack();
s.push(head);

Node curr = head.next;
head = null;
Node p = null;

while(curr != null){
//
if(s.peek().value != curr.value){
if(head == null){
head = s.pop();
p = head;
}else{
p.next = s.pop();
p = p.next;
}
p.next = null;
s.push(curr);
}else{
while(curr != null && s.peek().value == curr.value){
curr = curr.next;
}
if(curr == null) return head;
s.pop();
s.push(curr);
}
curr = curr.next;
}
if(!s.isEmpty()){
if(head == null){
head = s.pop();
p = head;
}else{
p.next = s.pop();
p = p.next;
}
p.next = null;
}
return head;
}
class Node{

int value;
Node next;

Node(int v){
value = v;
}
}
b******u
发帖数: 81
84
刚刚抄了一个
var items = from i in inputSet
group i by i into g
where g.Count() == 1
select g.Key;

已。不如您也给个1

【在 H*******g 的大作中提到】
: 哈哈,也是,多写几行好忽悠老板。反正我就是一行搞定。截图上2行是为了好看而已。不如您也给个1
: 行代码的解决方法吧?

H*******g
发帖数: 6997
85
赞一个,这代码利索。再加个AsParallel就真的无敌了。

【在 b******u 的大作中提到】
: 刚刚抄了一个
: var items = from i in inputSet
: group i by i into g
: where g.Count() == 1
: select g.Key;
:
: 已。不如您也给个1

b******u
发帖数: 81
86
Where where, 这不是让您给逼出来的么。AsParallel 我还真是头一回听说。

【在 H*******g 的大作中提到】
: 赞一个,这代码利索。再加个AsParallel就真的无敌了。
H*******g
发帖数: 6997
87
嗯,这东西威武无比。还能指定要多少个CPU CORE参与运算。

【在 b******u 的大作中提到】
: Where where, 这不是让您给逼出来的么。AsParallel 我还真是头一回听说。
l*****a
发帖数: 14598
88
上面好多帖子确实1米来长没人愿意看
但我想知道面试的时候让你写排序算法,你是不是直接调用任意一个sort() method完
事?

【在 H*******g 的大作中提到】
: List inputSet = new List();
: inputSet .Add(1);
: inputSet .Add(1);
: inputSet .Add(2);
: inputSet .Add(3);
: inputSet .Add(3);
: inputSet .Add(5);
: var duplicates = inputSet
: .GroupBy(i => i)
: .Where(g => g.Count() > 1)

H*******g
发帖数: 6997
89
那先要问清楚人家是想要SOLUTION还是想要BSO算法功力?反正我面试的时候,都是在尝试着取得主导
地位,也就是要让他们跟着我的节奏走。
譬如刚才说的什么算法吧。说实话我根本不会,但我肯定会忽悠。我会先说我不会算法,然后说我可以
提供一个SOLUTION,保证能用。然后BLAH BLAH,先扯个PREDICATE BUILDER,考官估计不知道,
然后我再扯个EXPRESSION TREE,我估计考官依然不知道。然后他们肯定要装逼问我是啥,然后我说
DELEGATE总知道了吧,考官终于开心了,说那你给讲讲。我说这个东西太复杂,我就送你一句话的解释
吧,然后BLAH BLAH,考官就被我搞定了。。。

【在 l*****a 的大作中提到】
: 上面好多帖子确实1米来长没人愿意看
: 但我想知道面试的时候让你写排序算法,你是不是直接调用任意一个sort() method完
: 事?

I****h
发帖数: 33
90
PNode trim_list(PNode begin)
{
Node head = {0};
PNode anchor = NULL;
PNode prev = NULL;
PNode curr = NULL;
int trim = 0;
if ((begin == NULL) || (begin->key != 0))
{
head.key = 0;
}
else
{
head.key = 1;
}
head.next = begin;
anchor = &head;
prev = &head;
curr = begin;
while (curr != NULL)
{
if (prev->key != curr->key)
{
if (trim == 0)
{
anchor = prev;
prev = curr;
curr = curr->next;
}
else
{
trim = 0;
anchor->next = prev->next;
free(prev);
prev = anchor->next;
curr = prev->next;
}
}
else
{
trim = 1;
prev->next = curr->next;
free(curr);
curr = prev->next;
}
}
if (trim != 0)
{
trim = 0;
anchor->next = NULL;
free(prev);
}
return head.next;
}

return

【在 r******3 的大作中提到】
: Given a sorted linked list, delete all duplicate numbers, leave only
: distinct numbers from original list. e.g., given 1->2->3->3->4->4->5, return
: 1->2->5. Given 1->1->1->2->3, return 2->3.
: 要求扫一遍,O(1) space。

相关主题
java 链表里面dummy node 一问?谢谢leetcode过的一代工程师
帮忙看一段小程序有没问题,谢谢c/c++ double pointer研究
reverse linked list 问题, double 和 single 的不同Reverse Linked list 用java实现
进入JobHunting版参与讨论
e****e
发帖数: 418
91
java:
public void remove(Node head) {
Node pre = null;
for ( Node node = head; node != null; node = node.getNext() ) {
boolean foundDuplidate = node.getNext() != null && node.getNum()
== node.getNext().getNum() ? true : false;

while ( node.getNext() != null && node.getNum() == node.getNext(
).getNum() ) {
node = node.getNext();
}

if ( foundDuplidate )
if ( pre == null )
pre = head = node.getNext();
else
pre.setNext( node.getNext() );
else
pre = node;
}
}
a**y
发帖数: 56
92
为什么我的程序在自己的机器上给出所有答案,但在leetnode上面错了?
class Solution {
public:
ListNode *deleteDuplicates(ListNode *head) {

if(head == NULL || head->next == NULL) return head;
else{
ListNode* c;
c = head->next;
int k =head->val;
while( c!=NULL && k == c->val )
c=c->next;
if (head->next != c)
{
head = c;
deleteDuplicates(head);
return head;
}
head->next = deleteDuplicates(head->next);
return head;
}


}
};
i**********e
发帖数: 1145
93
你代码有 bug。有可能重复连续的,所以不能保证当前head是之前的next。
把以下的代码:
deleteDuplicates(head);
return head;
改成:
return deleteDuplicates(head);
就好了。

【在 a**y 的大作中提到】
: 为什么我的程序在自己的机器上给出所有答案,但在leetnode上面错了?
: class Solution {
: public:
: ListNode *deleteDuplicates(ListNode *head) {
:
: if(head == NULL || head->next == NULL) return head;
: else{
: ListNode* c;
: c = head->next;
: int k =head->val;

S****h
发帖数: 115
94
这种单链表remove节点的问题,我看到有种解题习惯是在链表的头先生成一个dummy
node作为头,最后再去掉。可以省去很多判断和null指针的问题。(同理,tail也可
以)
e.g.
final ListNode dummy = new ListNode(0);
大家觉得这个习惯如何?

return

【在 r******3 的大作中提到】
: Given a sorted linked list, delete all duplicate numbers, leave only
: distinct numbers from original list. e.g., given 1->2->3->3->4->4->5, return
: 1->2->5. Given 1->1->1->2->3, return 2->3.
: 要求扫一遍,O(1) space。

i**********e
发帖数: 1145
95
这个解法可以,省去很多判定情况。但是就额外多了个节点,而且用意不明显,所以最
好与面试官先沟通。
其实用递归也可以有同样的效果,代码简洁些。

【在 S****h 的大作中提到】
: 这种单链表remove节点的问题,我看到有种解题习惯是在链表的头先生成一个dummy
: node作为头,最后再去掉。可以省去很多判断和null指针的问题。(同理,tail也可
: 以)
: e.g.
: final ListNode dummy = new ListNode(0);
: 大家觉得这个习惯如何?
:
: return

e******x
发帖数: 184
96
为什么中间讨论出现了别的题。。
给出我的code,leetcode上大小数据都跑过了~
public ListNode deleteDuplicates(ListNode head) {
// Start typing your Java solution below
// DO NOT write main() function
// Start typing your Java solution below
// DO NOT write main() function
if (head == null || head.next == null) { return head; }
ListNode last = head;
int v = head.val;
boolean dupl = false;
ListNode current = head.next;
while (current != null) {
if (current.val != v) {

if (! dupl && (last != head || last.val != v)) {
last = last.next;
} else if (dupl && last == head && last.val == v) {
last = current;
head = current;
dupl = false;
} else if (dupl) {
last.next = current;
dupl = false;
}

v = current.val;
} else {
dupl = true;
}
current = current.next;
}

if (dupl && last == head && last.val == v) {
return null;
} else if (dupl) {
last.next = null;
}

return head;
}
k******I
发帖数: 238
97
List 是 O (1)吧

【在 s******o 的大作中提到】
: for std::slist, erase is O(N) operation
k******I
发帖数: 238
98
能说一下具体的思路么?搞了半天没想出来怎么做

【在 i**********e 的大作中提到】
: 是的,用stack解,很隐含。
: 这道题你真正理解怎么用 stack 做的话,可以解很多类似这种的题目,思路都
: 是类似:
: maximal rectangle of 1's in a binary matrix
: 直方图盛水
: largest distance j-i such that A[i] < A[j].

i**********e
发帖数: 1145
99
http://www.informatik.uni-ulm.de/acm/Locals/2003/html/judge.htm

【在 k******I 的大作中提到】
: 能说一下具体的思路么?搞了半天没想出来怎么做
l*********8
发帖数: 4642
100
不过他说的是slist

【在 k******I 的大作中提到】
: List 是 O (1)吧
相关主题
一道linked list编程题再问大牛们leetcode上面Linkedlist的题,Reverse Nodes in k-G
感觉今天结结实实被烙印阴了题目: iterative binary tree post order traversal
M家 onsite 悲剧,同胞们弄死烙印吧reverse链表
进入JobHunting版参与讨论
l*********8
发帖数: 4642
101
我觉得以后不同的题目还是另外开一贴好。大家看起来方便。

【在 e******x 的大作中提到】
: 为什么中间讨论出现了别的题。。
: 给出我的code,leetcode上大小数据都跑过了~
: public ListNode deleteDuplicates(ListNode head) {
: // Start typing your Java solution below
: // DO NOT write main() function
: // Start typing your Java solution below
: // DO NOT write main() function
: if (head == null || head.next == null) { return head; }
: ListNode last = head;
: int v = head.val;

k******I
发帖数: 238
102
哦,那要用erase_after之类的,还得要一个previous保存一下前一个。我还是要不够
细心啊

【在 l*********8 的大作中提到】
: 不过他说的是slist
k*******2
发帖数: 84
103
Solution with Dummy node at the bottom. And how will recursion work here,
please?
class Solution {
public:
ListNode *deleteDuplicates(ListNode *head) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
if(head == NULL)
return head;

ListNode *dummy = new ListNode(0);
dummy->next = head;

ListNode *p1 = dummy;
ListNode *p2 = dummy->next;


while(p2!= NULL && p2->next != NULL)
{
if(p1->next->val == p2->next->val)
{
while(p2->next != NULL && p1->next->val == p2->next->val)
{
delete p2->next;
p2->next = p2->next->next;
}

p2 = p2->next;
p1->next = p1->next->next;

}else
{
p1 = p1->next;
p2 = p2->next;
}
}

return dummy->next;
}
};

【在 i**********e 的大作中提到】
: 这个解法可以,省去很多判定情况。但是就额外多了个节点,而且用意不明显,所以最
: 好与面试官先沟通。
: 其实用递归也可以有同样的效果,代码简洁些。

d*******y
发帖数: 27
104
one pass and constant space:
public static void rmDup(LinkedListNode head) {
LinkedListNode prev = head;
LinkedListNode run = head;
while (run != null) {
if (run.data == prev.data) {
run = run.next;
} else {
if (prev.next == run) {
prev = prev.next;
} else {
prev.next = run;
}
}
}
if (prev.next != run) {
prev.next = null;
}
}
1 (共1页)
进入JobHunting版参与讨论
相关主题
reverse linked list 问题, double 和 single 的不同题目: iterative binary tree post order traversal
leetcode过的一代工程师reverse链表
c/c++ double pointer研究Reverse LinkedList II 怎样一遍写对啊?
Reverse Linked list 用java实现leetcode Sort List
一道linked list编程题【我自己写的LinkedList为什么总有错?】
感觉今天结结实实被烙印阴了大牛们帮忙,Rverse Nodes in k-Group
M家 onsite 悲剧,同胞们弄死烙印吧看不懂这题
再问大牛们leetcode上面Linkedlist的题,Reverse Nodes in k-G明天电面,求建议
相关话题的讨论汇总
话题: node话题: null话题: head话题: next话题: prev