
剑指offer JZ16 合并两个排序的链表
发布日期:2021-05-07 13:14:29
浏览次数:19
分类:原创文章
本文共 1644 字,大约阅读时间需要 5 分钟。
合并两个排序的链表
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
思路
递归
public ListNode Merge(ListNode list1,ListNode list2) { if(list1 == null) return list2; if(list2 == null) return list1; if(list1.val<=list2.val){ list1.next = Merge(list1.next,list2); return list1; }else{ list2.next = Merge(list1,list2.next); return list2; } }
非递归
在while循环中比较两个链表指针所在位置的值,将较小的链接到新的链表中
public ListNode Merge(ListNode list1,ListNode list2) { if(list1 == null) return list2; if(list2 == null) return list1; ListNode node = null; ListNode temp = null; while(list1!=null&&list2!=null){ if(list1.val<=list2.val){ //链接之后怎么保证 if(node == null){ node = temp = list1; }else{ temp.next = list1; temp = temp.next; } list1 = list1.next; }else{ if(node == null){ node = temp = list2; }else{ temp.next = list2; temp = temp.next; } list2 = list2.next; } } if(list1==null) temp.next = list2; else temp.next = list1; return node; }
突破点
1、指针问题
ListNode node = null;
ListNode temp = null;
temp = node;
node = new ListNode(1);
System.out.println(temp.val);
会出现空指针异常,此处temp并不是指针,所以赋值的时候也需要给temp赋值,才能使用temp
2、不需要创建节点
temp.next = list1;
temp = temp.next;
直接把节点赋值过去就可以了
3、可以直接对头节点判断是否为空
if(node == null){ node = temp = list1; }else{ temp.next = list1; temp = temp.next; }}
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2025年04月04日 14时44分44秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
SpringBoot中使用Mybatis访问MySQL数据库(使用xml方式)
2019-03-04
python中的map( )函数及lambda()函数简介
2019-03-04
轮播图——旋转木马(Jquery)
2019-03-04
普通平衡树板子
2019-03-04
JSP内置对象:操作cookie、session对象
2019-03-04
【SE-02】多线程-02
2019-03-04
$set的使用(视图不能实时更新)
2019-03-04
一、硬件防火墙
2019-03-04
Javaweb jQuery功能练习
2019-03-04
余生,愿你能靠近那些正能量的人——
2019-03-04
蓝桥杯入门练习题斐波那契数列
2019-03-04
context:include-filter与exclude-filte控制扫描组件
2019-03-04
【SSL】1072砝码称重
2019-03-04
js数据结构--队列--常见操作
2019-03-04
全排列(深度优先搜索+递归)
2019-03-04
多项式插值法的Python程序
2019-03-04
vue.js常用指令及用法
2019-03-04
vuex的核心概念和运行机制
2019-03-04
SSLOJ1692 USACO 3.2 Magic Squares 魔板&P2730
2019-03-04
在Ubuntu上安装GCC编译器
2019-03-04