当前位置: 首页 > news >正文

力扣面试150题--合并两个有序链表和随机链表的复制

Day 33

题目描述

在这里插入图片描述

思路

常规题目,比较list1和list2节点的值,取出较小值扩展链表,最后其中一个遍历完直接拼接另外一个即可(归并排序)

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode() {}*     ListNode(int val) { this.val = val; }*     ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode mergeTwoLists(ListNode list1, ListNode list2) {ListNode res=new ListNode();//结果节点ListNode x=res;while(list1!=null&&list2!=null){//取出较小值拼接if(list1.val<=list2.val){x.next=list1;list1=list1.next;}else{x.next=list2;list2=list2.next;}x=x.next;}if(list1==null&&list2!=null){//直接拼接剩下的那个就行x.next=list2;}if(list2==null&&list1!=null){x.next=list1;}return res.next;}
}

题目描述

在这里插入图片描述

思路

中译中:创建一个新的链表,深拷贝即不能和原链表地址相同,将每个节点的next和random都拷贝下来,形成一个全新的链表。
思路:主要的难点在于,random是随机到任意的节点的,对于链表而言,这种随机跳跃很难实现,于是我采取了一个hashmap和list来将每个节点映射到list的序号中,先处理next的顺序,再使用map取出random的节点序号,直接从list中取出。

/*
// Definition for a Node.
class Node {int val;Node next;Node random;public Node(int val) {this.val = val;this.next = null;this.random = null;}
}
*/class Solution {public Node copyRandomList(Node head) {Map<Node,Integer>map=new HashMap<>();List<Node> list=new ArrayList<>();int i=0;Node beg=head;while(beg!=null){//将每个节点序号映射到mapmap.put(beg,i);i++;beg=beg.next;}Node res=new Node(0);Node x=res;beg=head;while(beg!=null){//拷贝正常链表Node tes=new Node(beg.val);x.next=tes;x=x.next;beg=beg.next;list.add(tes);}beg=head;x=res.next;int num;while(beg!=null){//处理随机指针if(beg.random!=null){num=map.get(beg.random);x.random=list.get(num);}else{x.random=null;}beg=beg.next;x=x.next;}return res.next;}}

相关文章:

  • SpringBoot物资管理系统 | JavaWeb项目设计与实现
  • 04-谷粒商城笔记
  • 测试用例的设计
  • 迷宫问题演示
  • ShaderToy学习笔记 03.多个形状和旋转
  • ‌C/C++对时间的处理
  • Scratch——第19课 正话反说问题
  • 线程池(四):并发编程常见问题解析
  • QT6 源(52)篇二:存储 c 语言字符串的类 QByteArray 的使用举例,
  • 中美艺术教育深度融合,Glowstar与ACSDA在尔湾签署战略合作协议推动艺术发展
  • ShaderToy学习笔记 02.圆
  • JAVA多线程(8.0)
  • Pygame核心概念解析:Surface、Clock与事件循环
  • C++学习-入门到精通-【2】类、对象和字符串的介绍
  • 2025.04.26-饿了么春招笔试题-第二题
  • leetcode 26和80
  • DIY 3D打印机 原理及步骤概况
  • MySQL基本命令--系统+用户+表
  • 搭建动态SQL取数
  • 【Token系列】02 | Embedding是怎么“长出来”的?从查表到训练过程全解
  • 中国海警局新闻发言人就菲律宾非法登临铁线礁发表谈话
  • 这些被低估的降血压运动,每天几分钟就管用
  • 加拿大温哥华一车辆冲撞人群,造成多人伤亡
  • 人民日报读者点题:规范涉企执法,怎样防止问题反弹、提振企业信心?
  • 年客流超2500万,九岁的上海国际旅游度假区有哪些文旅商体实践?
  • 《深化养老服务改革发展的大湾区探索》新书将于今年6月出版