①英文题目

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就行了。 ,体会下自己的想法和别人的差距。

最新文章

  1. ionic第二坑——ionic 上拉菜单(ActionSheet)安卓样式坑
  2. Windows常用快捷方式
  3. 支付宝即时到账API,网站收到回调页面,输出验证失败,log中responseTxt=错误的问题
  4. Objective-C Runtime与黑客帝国
  5. Java 动态代理
  6. python数据结构与算法——二叉树结构与遍历方法
  7. 基于jquery的表格动态创建,自动绑定,自动获取值
  8. Android关于buildToolVersion与CompileSdkVersion的区别
  9. Computer Vision and Machine Learning Competitions
  10. js 获取月份 格式yy-mm-dd
  11. SharePoint需要开启的网站集功能
  12. ID3算法(1)
  13. Win10没有以太网图标如何找回?以太网适配器不见了怎么恢复?
  14. Spring Boot 2.X 如何添加拦截器?
  15. Python--day07(数据类型转换、字符编码)
  16. div 内容宽度自适应、超出后换行
  17. ImageMagick 笔记: 索引颜色(index color)、锁定图层,透明 png 转 gif (保持清晰度)
  18. python3+selenium入门13-操作cookie
  19. ssh: connect to host xx.xx.xxx.xxx port 22: Connection refused
  20. vue环境配置脚手架环境搭建vue工程目录

热门文章

  1. plSql使用流程
  2. SSO原理解析
  3. 2019.10.28 CSP%您赛第四场t3
  4. 使用eclipse在tomcat中设置项目启动的虚拟路径
  5. 百万年薪python之路 -- 迭代器
  6. Mybaits 源码解析 (四)----- SqlSession的创建过程(看懂框架源码再也不用死记硬背面试题)
  7. CCBPM工作流系统中如何在特定的一个步骤,调用起另外一条流程
  8. 【朝花夕拾】跨进程通信,你只知道AIDL,就OUT了
  9. 最简破解-java代码热加载热部署IDEA插件JRebel
  10. MongoDB系列---用户及权限管理02