剑指 Offer —16—合并两个排序的链表
来源:互联网 发布:wto国际贸易统计数据库 编辑:程序博客网 时间:2024/05/29 16:43
合并两个排序的链表 : 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
注意点: 注意异常情况
- 链表为空
思路:
循环:新建一个链表,保存比较后的值
递归:注意终止条件,返回值
// 循环版本package A16合并两个排序的链表;public class Solution { public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } } public ListNode Merge(ListNode list1, ListNode list2) { // 循环版本 if (list1 == null && list2 == null) { return null; } if (list1 == null) { return list2; } if (list2 == null) { return list1; } ListNode listNode = null;// 首节点 if (list1.val < list2.val) { listNode = list1; list1 = list1.next; } else { listNode = list2; list2 = list2.next; } // listNode = (list1.val <= list2.val) ? list1 : list2; // 1,2,3,4 ListNode temp = listNode; // 向下移动 while (list1 != null && list2 != null) { // 注意 不能是list1.next != null 否则最后一个遍历不到 if (list1.val <= list2.val) { temp.next = list1; temp = temp.next; list1 = list1.next; } else { temp.next = list2; temp = temp.next; list2 = list2.next; } } if (list1 != null) { temp.next = list1; } if (list2 != null) { temp.next = list2; } return listNode; }}
// 递归版本package A16合并两个排序的链表;public class Solution1 { public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } } public ListNode Merge(ListNode list1, ListNode list2) { if (list1 == null && list2 == null) { return null; } if (list1 == null) { return list2; } if (list2 == null) { return list1; } ListNode root = null; if (list1.val <= list2.val) { root = list1; root.next = Merge(list1.next, list2); }else{ root = list2; root.next = Merge(list1, list2.next); } return root; }}
阅读全文
0 0
- 剑指offer(16)—合并两个排序的链表
- 《剑指offer》——合并两个排序的链表
- 《剑指offer》——合并两个排序的链表
- 剑指offer——合并两个排序的链表
- 合并两个排序的链表——剑指offer
- 剑指offer——合并两个排序的链表
- 剑指offer——两个合并排序的链表
- 剑指Offer——合并两个排序的链表
- 剑指offer—合并两个排序的链表
- 剑指offer—合并两个排序的链表
- 剑指offer 16 合并两个排序的链表
- 剑指Offer(16)______合并两个排序的链表
- 剑指Offer——(16)合并两个排序的链表
- 剑指 Offer —16—合并两个排序的链表
- 剑指offer代码解析——面试题17合并两个排序的链表
- 剑指Offer:面试题17——合并两个排序的链表
- 剑指offer——面试题17:合并两个排序的链表
- 剑指offer——合并两个排序的链表__
- Java读写txt文件-Java读写文件(txt)
- RxJava使用
- <c:forEach varStatus="status">中 varStatus的使用
- filter过滤器设置编码
- 简单入门shell脚本编程
- 剑指 Offer —16—合并两个排序的链表
- Okhttp框架缓存使用
- 饿了么项目---13、模块化编程,实现商品详情页面
- WordPress 使用 Email Subscribers & Newsletters 添加邮件订阅功能
- inline用法详解
- wpf中一个ProcessBar的实现
- 数据处理:如何处理缺失数据(missing value)? 各种处理方法有什么利弊?
- 使用Maven搭建Struts2+Spring3+Hibernate4的整合开发环境
- 解析ZCSJEnity的函数