merge two sorted linked list with duplicates

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值