面试题26:复杂链表的复制
来源:互联网 发布:淘宝淘金币哪里可以买 编辑:程序博客网 时间:2024/06/08 15:17
面试题26:复杂链表的复制
题目描述
输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)
代码:
package offer;import java.util.HashMap;/** * 面试题26:复杂链表的复制 * 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点), * 返回结果为复制后复杂链表的head。( * 注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) */public class _26_linked_copy { public static void main(String[] args){ Solution26 solution26 = new Solution26(); //{1,2,3,4,5,3,5,#,2,#} RandomListNode26 randomListNode1 = new RandomListNode26(1); RandomListNode26 randomListNode2 = new RandomListNode26(2); RandomListNode26 randomListNode3 = new RandomListNode26(3); RandomListNode26 randomListNode4 = new RandomListNode26(4); RandomListNode26 randomListNode5 = new RandomListNode26(5); randomListNode1.next=randomListNode2; randomListNode2.next=randomListNode3; randomListNode3.next=randomListNode4; randomListNode4.next=randomListNode5; randomListNode1.random=randomListNode3; randomListNode2.random=randomListNode4; randomListNode3.random=null; randomListNode4.random=randomListNode2; randomListNode5.random=null; RandomListNode26 pResult=solution26.Clone(randomListNode1); RandomListNode26 pResult2=pResult; while(pResult!=null){ System.out.print(pResult.label+"、"); pResult=pResult.next; } while(pResult2!=null){ if(pResult2.random==null){ System.out.print("#、"); }else{ System.out.print(pResult2.random.label+"、"); } pResult2=pResult2.next; } }}class Solution26 { public RandomListNode26 Clone(RandomListNode26 pHead) { if(pHead==null){ return null; } int count=0; RandomListNode26 pResult=new RandomListNode26(pHead.label); HashMap<Integer, RandomListNode26> hash = new HashMap<Integer, RandomListNode26>(); hash.put(++count,pHead.random); RandomListNode26 pResultTmp=pResult; while(pHead.next!=null){ RandomListNode26 pTmp=new RandomListNode26(pHead.next.label); pResultTmp.next=pTmp; hash.put(++count,pHead.next.random); pHead=pHead.next; pResultTmp=pResultTmp.next; } pResultTmp.next=null; RandomListNode26 tmp=pResult; count=1; while(tmp!=null){ if(hash.get(count)!=null){ tmp.random=hash.get(count++); }else{ count++; tmp.random=null; } tmp=tmp.next; } return pResult; }}class RandomListNode26 { int label; RandomListNode26 next = null; RandomListNode26 random = null; RandomListNode26(int label) { this.label = label; }}
0 0
- 【面试题】复杂链表的复制
- 面试题:复杂链表的复制
- 面试题26:复杂链表复制
- 面试题26:复杂链表的复制
- [剑指offer][面试题26]复杂链表的复制
- 剑指offer 面试题26复杂链表的复制
- 【剑指offer】面试题26:复杂链表的复制
- 剑指Offer:面试题26 复杂链表的复制
- 面试题26 复杂链表的复制
- 《剑指Offer》面试题26:复杂链表的复制
- 面试题26复杂链表的复制
- 剑指offer面试题26-复杂链表的复制
- 面试题26:复杂链表的复制
- 剑指offer-面试题26:复杂链表的复制
- 剑指Offer----面试题26:复杂链表的复制
- 面试题26 复杂链表的复制
- 面试题26:复杂链表的复制
- 剑指offer 面试题26 复杂链表的复制
- Flink批处理优化器之Interesting Properties
- 基础练习 阶乘计算
- Socket编程——总结
- StringBuffer 类
- BZOJ 2752: [HAOI2012]高速公路(road)
- 面试题26:复杂链表的复制
- POJ - 2251 bfs [kuangbin带你飞]专题一
- JVM线程资源同步及交互机制
- Vue-resource实现ajax请求和跨域请求--李帅醒博客
- 数组指针和指针数组
- 面试题27:二叉搜索树与双向链表
- 好人一生平安
- java-collections
- LabVIEW串口通信全方位了解