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

力扣面试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;}}
http://www.xdnf.cn/news/2151.html

相关文章:

  • BT152-ASEMI机器人率器件专用BT152
  • TEC制冷片详解(STM32)
  • 电机试验平台:实现精准测试与优化设计
  • 【开源飞控】调试
  • 统计定界子数组的数组
  • 下垂控制属于构网型控制技术
  • pytest 技术总结
  • CCF CSP 第30次(2023.05)(4_电力网络_C++)
  • Fedora 43 计划移除所有 GNOME X11 相关软件包
  • Android 13 接入 MediaSession 详细文档
  • 机器学习——朴素贝叶斯法运用
  • 网络攻防第一~四集
  • T型三电平逆变器的SPWM线电压 线与中点电压有几种电平
  • 关闭网桥的STP,解决RHEL10上qemu使用u-boot加载uImage自动加载失败的问题
  • 驱动汽车供应链数字化转型的标杆解决方案:全星研发项目管理APQP软件系统:
  • DP主站转485操作流程
  • vuePress开发和使用
  • WebAssembly全栈革命:在Rust与JavaScript之间构建高性能桥梁
  • 如何轻松将RS232转为Profibus DP,提升PLC效率?
  • ClickHouse查询执行与优化
  • 数据过滤器
  • 阿里云域名智能解析至国内外AWS的合规化部署指南
  • Windows11系统中GIT下载
  • 系统架构设计中的DSSA方法:理论、实践与行业深度应用
  • 【SwitchyOmega安装教程】
  • 【Token系列】01 | Token不是词:GPT如何切分语言的最小单元
  • 思科路由器重分发(RIP动态路由+静态路由)
  • 强化学习:高级策略梯度理论与优化方法
  • react的fiber 用法
  • 6.1腾讯技术岗2025面试趋势前瞻:大模型、云原生与安全隐私新动向