题目描述
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
思路
1.仿照归并排序中merge的逻辑即可。
Java代码实现
public ListNode Merge(ListNode list1,ListNode list2) {
ListNode p = new ListNode(-1);
ListNode res = p;
while(list1 != null || list2 != null){
int cur1 = list1 == null ? Integer.MAX_VALUE : list1.val;
int cur2 = list2 == null ? Integer.MAX_VALUE : list2.val;
if(cur1 < cur2){
p.next = new ListNode(cur1);
list1 = list1.next;
}else{
p.next = new ListNode(cur2);
list2 = list2.next;
}
p = p.next;
}
return res.next;
}
Golang代码实现
func Merge(list1 *ListNode,list2 *ListNode)*ListNode{
res := new(ListNode)
p := res
for list1 != nil || list2 != nil {
if list1 == nil{
p.Next = &ListNode{list2.Val,nil}
list2 = list2.Next
p = p.Next
continue
}
if list2 == nil{
p.Next = &ListNode{list1.Val,nil}
list1 = list1.Next
p = p.Next
continue
}
cur1 := list1.Val
cur2 := list2.Val
if cur1<cur2{
p.Next = &ListNode{cur1,nil}
list1 = list1.Next
}else{
p.Next = &ListNode{cur2,nil}
list2 = list2.Next
}
}
return res.Next
}
有疑问加站长微信联系(非本文作者)