merge two sorted linked list with duplicates
2012-08-28 23:16
411 查看
Question:
Given two sorted linked list, and merge them without using extra space (using constant space is allowed). For example, if 1 -> 2 -> 5 merges with 2 -> 4 -> 5, we have 1 -> 2 -> 4 -> 5
Analyze:
using four pointers:
h1: point to the head of list 1
h2: point to the head of list 2;
small: the smaller head between h1 and h2;
prev: the last node in the "new" list;
public static Node mergeSortedListWithDuplicates(Node h1, Node h2) {
//one or both of the list(s) is (are) null
if(h1 == null) return h2;
if(h2 == null ) return h1;
Node newHead = (h1.data <= h2.data) ? h1 : h2;
Node small = null;
Node prev = newHead;
//proceed to compare two heads and until one of them is null
while (h1 != null && h2 != null) {
if (h1.data <= h2.data) {
small = h1;
h1 = h1.next;
} else {
small = h2;
h2 = h2.next;
}
prev.next = small;
prev = small;
}
//deal with the remaining part of h1 or h2
if (h1 == null) prev.next = h2;
if (h2 == null) prev.next = h1;
return newHead;
}
http:blog.csdn.net/beiyeqingteng
Given two sorted linked list, and merge them without using extra space (using constant space is allowed). For example, if 1 -> 2 -> 5 merges with 2 -> 4 -> 5, we have 1 -> 2 -> 4 -> 5
Analyze:
using four pointers:
h1: point to the head of list 1
h2: point to the head of list 2;
small: the smaller head between h1 and h2;
prev: the last node in the "new" list;
public static Node mergeSortedListWithDuplicates(Node h1, Node h2) {
//one or both of the list(s) is (are) null
if(h1 == null) return h2;
if(h2 == null ) return h1;
Node newHead = (h1.data <= h2.data) ? h1 : h2;
Node small = null;
Node prev = newHead;
//proceed to compare two heads and until one of them is null
while (h1 != null && h2 != null) {
if (h1.data <= h2.data) {
small = h1;
h1 = h1.next;
} else {
small = h2;
h2 = h2.next;
}
prev.next = small;
prev = small;
}
//deal with the remaining part of h1 or h2
if (h1 == null) prev.next = h2;
if (h2 == null) prev.next = h1;
return newHead;
}
http:blog.csdn.net/beiyeqingteng
相关文章推荐
- merge two sorted linked list with duplicates
- merge two sorted linked list without duplicates
- LeetCode 21 Merge Two Sorted Lists(合并两个已排序的链表)(Linked List)
- LeetCode 学习 LinkedList 专项(4)—— Merge Two Sorted Lists
- Merge Sorted Array leetcode java(回顾MergeTwoArray和MergeTwoLinkedList)
- LeetCode@LinkedList_21_Merge_Two_Sorted_Lists
- LeetCode_Linked List_Merge Two Sorted Lists
- LinkedList-21-Merge Two Sorted Lists
- LeetCode -- Merge Two Sorted Linked List
- Remove Duplicates from Sorted List && Merge Two Sorted Lists && Linked List Cycle && Remove Nth Node
- 21. Merge Two Sorted Lists(Linked List)
- 【LeetCode】【Linked List】Merge Two Sorted Lists
- 21. Merge Two Sorted Lists(Linked List-Easy)
- LeetCode 刷题: 合并两个有序链表 (merge two sorted list)
- LeetCode—Merge Two Sorted Lists融合两个有序单链表
- [leetcode][list] Merge Two Sorted Lists
- LeetCode: Merge Two Sorted Lists, Remove Duplicates/Element, strStr()
- leetCode(8):merge two sorted list
- 【Hackerrank】Merge two sorted linked lists
- LeetCode[Linked List]: Merge k Sorted Lists