剑指offer---合并两个排序的链表
2016-06-23 22:29
369 查看
题目描述
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
完整代码:
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
解法一:
public static ListNode Merge(ListNode list1, ListNode list2) { if (list1 == null) return list2; if (list2 == null) return list1; // 创建一个临时结点,用于添加元素时方便 ListNode root = new ListNode(0); // 用于指向合并后的新链的尾结点 ListNode pointer = root; while (list1 != null && list2 != null) { if (list1.val < list2.val) { pointer.next = list1; list1 = list1.next; } else { pointer.next = list2; list2 = list2.next; } pointer = pointer.next; } if (list1 != null) { pointer.next = list1; } if (list2 != null) { pointer.next = list2; } return root.next; }
解法二:
public static ListNode Merge2(ListNode list1, ListNode list2) { if (list1 == null) return list2; if (list2 == null) return list1; ListNode head = null; if (list1.val <= list2.val) { head = list1; head.next = Merge2(list1.next, list2); } else { head = list2; head.next = Merge2(list1, list2.next); } return head; }
完整代码:
public class ListNode { int val; ListNode next = null; public ListNode(int val) { this.val = val; } public static void printList(ListNode head) { while (head != null) { System.out.print(head.val + "->"); head = head.next; } } public static void main(String[] args) { ListNode head = new ListNode(1); head.next = new ListNode(2); head.next.next = new ListNode(3); head.next.next.next = new ListNode(4); head.next.next.next.next = new ListNode(5); printList(head); System.out.println(); ListNode head2 = new ListNode(1); head2.next = new ListNode(3); head2.next.next = new ListNode(5); head2.next.next.next = new ListNode(6); head2.next.next.next.next = new ListNode(7); printList(head2); System.out.println(); head = Merge(head, head2); // head = Merge2(head, head2); printList(head); } }
相关文章推荐
- 编写优雅的JavaScript——前言
- jquery中fadein函数实现图片逐渐清晰显示
- javascript实现网页图片逐渐清晰
- 打造 Bootstrap Tags Input 同 Modal 结合的利器(改)
- 打造 Bootstrap Tags Input 同 Modal 结合的利器
- 文章标题
- 函数,this,局部变量
- 前端学习——css(初级)
- Json解析较为复杂的数据(Map中含有List)从服务器获取城市数据实现三级联动
- Javascript Regexp match and replace
- JavaScript中变量作用域问题
- JavaScript正则表达式解析器和可视化:Regulex
- 边学边用JavaScript之数据类型,函数,控制结构
- html5中常用的一些功能
- js 图片预加载
- html5+canvas实现图片的压缩上传
- node.js初识
- jQuery 各类判断函数汇总
- 利用calssName给元素修改样式
- 利用calssName给元素修改样式