[LC]21题 Merge Two Sorted Lists (合并两个有序链表)(链表)
2024-09-01 17:36:57
①英文题目
Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.
Example:
Input: 1->2->4, 1->3->4
Output: 1->1->2->3->4->4
②中文题目
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
③思路
就是判断大小,注意,比着比着,l1或者l2就会空掉,然后导致空指针的问题,进而报错。
④代码
class Solution {
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
ListNode zf=null;
// ListNode curr=zf;
ListNode temp1=l1;
ListNode temp2=l2;
if(temp1==null&&temp2!=null){
zf=temp2;
temp2=temp2.next;
}
if(temp1!=null&&temp2==null){
zf=temp1;
temp1=temp1.next;
}
if(temp1!=null&&temp2!=null){
if(temp1.val<temp2.val){
zf=temp1;
temp1=temp1.next;
}
else{
zf=temp2;
temp2=temp2.next;
}
} //到此,zf是最小的结点,也是头部。
ListNode curr=zf;
while(temp1!=null||temp2!=null){
if(temp1==null&&temp2!=null){
curr.next=temp2;
temp2=temp2.next;
curr=curr.next;
}
if(temp2==null&&temp1!=null){
curr.next=temp1;
temp1=temp1.next;
curr=curr.next;
}
if(temp1!=null&&temp2!=null&&temp1.val<temp2.val){
curr.next=temp1;
temp1=temp1.next;
curr=curr.next;
}
if(temp1!=null&&temp2!=null&&temp1.val>=temp2.val){
curr.next=temp2;
temp2=temp2.next;
curr=curr.next;
}
}
return zf;
}
}
⑤运行结果
执行结果:
通过
显示详情
执行用时 :1 ms, 在所有 Java 提交中击败了98.26%的用户
内存消耗 :39.3 MB, 在所有 Java 提交中击败了68.88%的用户
⑥学到的知识
1、如果超时,那去考虑是不是while()的括号里写的表达式,一直跳不出while循环。
2、DriverSolution__.__helper__这种报错,是空指针。一般就是某个链表已经到链尾了,代码还在找它的next,从而导致空指针。
⑦别人的答案
class Solution {
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
if (l1 == null) {
return l2;
}
else if (l2 == null) {
return l1;
}
else if (l1.val < l2.val) {
l1.next = mergeTwoLists(l1.next, l2); //递归
return l1; //因为在递归,所以此处可以返回return l1
}
else {
l2.next = mergeTwoLists(l1, l2.next);
return l2;
} }
}
⑧从别人代码学到的东西
1、 在我的代码里,为了最后return的时候,能从头结点开始return,我在我的代码的25行,给zf找了个复制体curr,让curr去做事,让zf一直表示头结点,最后return zf。
而在别人的代码里,因为第10行用了递归,所以第11行return个l1就行了。 ,体会下自己的想法和别人的差距。
最新文章
- ionic第二坑——ionic 上拉菜单(ActionSheet)安卓样式坑
- Windows常用快捷方式
- 支付宝即时到账API,网站收到回调页面,输出验证失败,log中responseTxt=错误的问题
- Objective-C Runtime与黑客帝国
- Java 动态代理
- python数据结构与算法——二叉树结构与遍历方法
- 基于jquery的表格动态创建,自动绑定,自动获取值
- Android关于buildToolVersion与CompileSdkVersion的区别
- Computer Vision and Machine Learning Competitions
- js 获取月份 格式yy-mm-dd
- SharePoint需要开启的网站集功能
- ID3算法(1)
- Win10没有以太网图标如何找回?以太网适配器不见了怎么恢复?
- Spring Boot 2.X 如何添加拦截器?
- Python--day07(数据类型转换、字符编码)
- div 内容宽度自适应、超出后换行
- ImageMagick 笔记: 索引颜色(index color)、锁定图层,透明 png 转 gif (保持清晰度)
- python3+selenium入门13-操作cookie
- ssh: connect to host xx.xx.xxx.xxx port 22: Connection refused
- vue环境配置脚手架环境搭建vue工程目录