剑指offer:面试题 17:合并两个排序的链表
2016-08-07 00:00
537 查看
摘要: 剑指offer:面试题 17:合并两个排序的链表
输入两个递增排序的链表,合并这两个链表并使新的链表的节点仍是按照递增排序的。
如:
list1: 1 --> 3 --- >5;
list1: 2 --> 4 --- >6;
则新链表为 :1 --> 2 --> 3 --> 4 --> 5 --> 6
节点:
ListNode4:
MergeList:
测试:
结果:
123456
输入两个递增排序的链表,合并这两个链表并使新的链表的节点仍是按照递增排序的。
如:
list1: 1 --> 3 --- >5;
list1: 2 --> 4 --- >6;
则新链表为 :1 --> 2 --> 3 --> 4 --> 5 --> 6
节点:
ListNode4:
class ListNode4{ int value; ListNode4 next; public ListNode4() { super(); } public ListNode4(int value) { super(); this.value = value; } public int getValue() { return value; } public void setValue(int value) { this.value = value; } public ListNode4 getNext() { return next; } public void setNext(ListNode4 next) { this.next = next; } }
MergeList:
public ListNode4 merge(ListNode4 list1,ListNode4 list2){ if (list1 == null && list2 == null) { return null; }else if (list1 == null) { return list2; }else if (list2 == null) { return list1; } ListNode4 mergeListHead = null; if (list1.getValue() < list2.getValue()) { mergeListHead = list1; ListNode4 next = merge(list1.getNext(), list2); mergeListHead.setNext(next); }else { mergeListHead = list2; ListNode4 next = merge(list1, list2.getNext()); mergeListHead.setNext(next); } return mergeListHead; }
public ListNode4 init1(){ ListNode4 node1 = new ListNode4(1); ListNode4 node2 = new ListNode4(3); ListNode4 node3 = new ListNode4(5); node1.setNext(node2); node2.setNext(node3); return node1; } public ListNode4 init2(){ ListNode4 node1 = new ListNode4(2); ListNode4 node2 = new ListNode4(4); ListNode4 node3 = new ListNode4(6); node1.setNext(node2); node2.setNext(node3); return node1; }
测试:
public static void main(String[] args) { MergeList mergeList = new MergeList(); ListNode4 list1 = mergeList.init1(); ListNode4 list2 = mergeList.init2(); ListNode4 newList = mergeList.merge(list1, list2); while(newList.getNext() != null){ System.out.print(newList.getValue()); newList = newList.getNext(); if (newList.getNext() == null) { System.out.println(newList.getValue()); } } }
结果:
123456
相关文章推荐
- 《剑指offer》面试题17:合并两个排序的链表
- 剑指offer——面试题17:合并两个排序的链表
- 剑指Offer之面试题17:合并两个排序的链表
- 《剑指Offer》学习笔记--面试题17:合并两个排序的链表
- 剑指offer-面试题17:合并两个排序的链表
- (剑指Offer)面试题17:合并两个排序的链表
- 《剑指Offer》面试题17:合并两个排序的链表
- 剑指offer之面试题17:合并两个排序的链表
- 剑指offer(面试题17):合并两个已排序的链表
- 《剑指offer》面试题17—合并两个排序链表
- 剑指offer-chapter3-面试题17-合并两个排序的链表(java)
- 《剑指offer》(面试题17):合并两个排序的链表
- 剑指Offer系列-面试题17:合并两个排序的链表
- 剑指Offer面试题16反转链表(递归和非递归),面试题17合并两个排序的链表(递归)
- 剑指offer——面试题17:合并两个排序的链表(非递归方法和递归方法)
- 面试题17 合并两个排序的链表
- 面试题17 合并两个排序的链表
- [剑指offer][面试题17]合并两个排序的链表
- 面试题17:合并两个排序的链表
- 面试题17:合并两个排序的链表