avatar
a*0
1
检查了好几遍 没发现错误
/**
* Definition for singly-linked list with a random pointer.
* class RandomListNode {
* int label;
* RandomListNode next, random;
* RandomListNode(int x) { this.label = x; }
* };
*/
public class Solution {

public RandomListNode copyRandomList(RandomListNode head) {

if(head == null)
return null;

if(head.next == null){
RandomListNode result = new RandomListNode(head.label);
result.next = head.next;
result.random = result.random;
return result;
}


RandomListNode scanner = head;
while(scanner != null){
RandomListNode temp = new RandomListNode(scanner.label);
temp.next = scanner.next;
scanner.next = temp;
scanner = scanner.next.next;
}




scanner = head;
while(scanner != null){
if(scanner.random != null)
scanner.next.random = scanner.random.next;

scanner = scanner.next.next;
}

RandomListNode fakeHead = head.next;
scanner = fakeHead;

while(scanner.next != null){
scanner.next= scanner.next.next;
scanner = scanner.next;
}

return fakeHead;

}
}
avatar
f*a
2
如果小朋友好喜欢画漫画,也画得很好看,她现在读初中,她问我将来可以向哪行发展
?读哪科好?
avatar
m*n
3
对java不熟 我感觉好像有点问题比如 这段代码:
if(head.next == null){
RandomListNode result = new RandomListNode(head.label);
result.next = head.next;
result.random = result.random;
return result;
}
result是一个新的node 然后result的next连null, result.random指向result.random
是什么意思?
avatar
f*a
4
请问大家有什么意见?我答她读室内设计,这样对吗?
avatar
a*0
5
意见很中肯
不过我已经通过了
你说的我改掉了

random

【在 m*********n 的大作中提到】
: 对java不熟 我感觉好像有点问题比如 这段代码:
: if(head.next == null){
: RandomListNode result = new RandomListNode(head.label);
: result.next = head.next;
: result.random = result.random;
: return result;
: }
: result是一个新的node 然后result的next连null, result.random指向result.random
: 是什么意思?

avatar
t*y
6
搞网页设计也行。

【在 f**a 的大作中提到】
: 请问大家有什么意见?我答她读室内设计,这样对吗?
avatar
a*0
7
我的思路是
复制每个节点 插在每个节点的后边
然后每个都copy random pointer
然后分开两个链表
我为什么第一次没有通过呢 因为第一次只是构建了一个新链表 但是把原来的破坏了

random

【在 m*********n 的大作中提到】
: 对java不熟 我感觉好像有点问题比如 这段代码:
: if(head.next == null){
: RandomListNode result = new RandomListNode(head.label);
: result.next = head.next;
: result.random = result.random;
: return result;
: }
: result是一个新的node 然后result的next连null, result.random指向result.random
: 是什么意思?

avatar
r*o
8
这两天有个新闻'一个25岁华人姑娘 靠画画登上了福布斯排行榜',可以借鉴。
avatar
a*0
9
/**
* Definition for singly-linked list with a random pointer.
* class RandomListNode {
* int label;
* RandomListNode next, random;
* RandomListNode(int x) { this.label = x; }
* };
*/
public class Solution {
public RandomListNode copyRandomList(RandomListNode head) {

if(head == null)
return null;

if(head.next == null){
RandomListNode result = new RandomListNode(head.label);
result.next = null;
if(head.random != null)
result.random = result;
return result;
}


RandomListNode scanner = head;

while(scanner != null){

RandomListNode temp = new RandomListNode(scanner.label);
temp.next = scanner.next;
scanner.next = temp;
scanner = scanner.next.next;
}

scanner = head;
while(scanner != null){
if(scanner.random != null)
scanner.next.random = scanner.random.next;

scanner = scanner.next.next;
}

RandomListNode fakeHead = head.next;
RandomListNode scannerOne = head;
RandomListNode scannerTwo = fakeHead;

while(scannerTwo.next != null){
RandomListNode temp = scannerTwo.next;
scannerTwo.next= scannerTwo.next.next;
scannerOne.next = temp;
scannerOne = scannerOne.next;
scannerTwo = scannerTwo.next;
}

scannerOne.next = null;

return fakeHead;

}
}
通过了
就是按照你说的改的

random

【在 m*********n 的大作中提到】
: 对java不熟 我感觉好像有点问题比如 这段代码:
: if(head.next == null){
: RandomListNode result = new RandomListNode(head.label);
: result.next = head.next;
: result.random = result.random;
: return result;
: }
: result是一个新的node 然后result的next连null, result.random指向result.random
: 是什么意思?

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