这是我的代码:
/**
* 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) {
//using a map to store the number and Node
HashMap<RandomListNode,Integer>old_Node=new HashMap<>();
// using a list to store the Node
LinkedList<RandomListNode> new_Node = new LinkedList<>();
// store the First_Head
RandomListNode first_head= head;
初始化
int i =0;
while(head!=null){
//add everynode ,and number to map
old_Node.put(head.random,i);
//add everynode to list
new_Node.add(new RandomListNode(head.label));
head=head.next;
i++;
}
复制RandomNode
head=first_head; // change the head so that it can be the first_head
new_Node.add(null); //to solve the lastNode[i+1]
i = 0;
在这篇文章中为什么得到这个东西..代码无法运行.. //第33行rror:找不到符号:变量get *
while(head!=null){
new_Node.get[i].next=new_Node.get[i+1];
//Line 33 rror: cannot find symbol: variable get*
最终代码
if(head.random!=null){
int id = old_Node.get[head.random];
//find the randomNode's number
new_Node.get[i].random =new_Node.get[id];
}
head=head.next;
i++;
}
return new_Node.get[0];
}
}
任何人都可以帮助我。我认为这段代码不是很好,必须要有一些布局
首先添加地图和列表
然后将数字和节点放到地图
然后新建一个List来存储Node