牛客题解官 level
获赞
1.5W
粉丝
96.2W
关注
2
看过 TA
6850
清华大学
2019
Java
IP属地:北京
牛客题解小达人~
私信
关注
2022-04-25 17:39
清华大学 Java
题目的主要信息:  一个复杂链表除了有指向后一个节点的指针,还有一个指针随机节点的指针 将该复杂链表拷贝,返回拷贝链表的头节点 拷贝链表必须创建新的节点  举一反三: 学习完本题的思路你可以解决如下题目: JZ18. 删除链表的节点 JZ6. 从尾到头打印链表 JZ52. 两个链表的第一个公共节点 JZ23. 链表环的入口 JZ25. 合并两个有序链表 方法一:组合链表(推荐使用) 知识点:双指针 双指针指的是在遍历对象的过程中,不是普通的使用单个指针进行访问,而是使用两个指针(特殊情况甚至可以多个),两个指针或是同方向访问两个链表、或是同方向访问一个链表(快慢指针)、或是相反方向扫描(对撞指...
南大一只牛:回头来看,发现利用哈希表解法的官方解答真的有点麻烦,主要是没有必要遍历哈希表。这里有个简化版本的方法,同样适用哈希表,首先遍历链表,每遍历到一个结点就新建结点,并保存结点对到哈希表。然后,再次遍历链表,每次用原结点到哈希表找复制后的结点,然后map.get(cur).next = map.get(cur.next);map.get(cur).random = map.get(cur.random);直接一次建立好复杂链表。这里相比于原来的遍历哈希表,逻辑更清晰易懂,并且map的作用体现的淋漓尽致,就是保存结点对。
0 点赞 评论 收藏
分享

创作者周榜

更多
关注他的用户也关注了:
牛客网
牛客网在线编程
牛客网题解
牛客企业服务