题目
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
思路
- 创建一个链表。用于保存每一次比较之后。存储答案的
- 依次比较val值。这里需要先做一步比较。让链表最开始有值。这样就解决了不会因为链表在增长无法回到第一个位置。 需要注意的是,这里拷贝的是地址
- 如果
m.val > n.val
- 让链表的next等于n
- 两个链表后移一个节点
- 如果
m.val < n.val
- 让链表的next等于m
- 两个链表后移一个节点
- 如果
- 总有一次,m或者n会指向空指针。这个时候,就需要判断一下,然后将另一方的节点接在自己创建的链表即可。
AC代码
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class Solution {
public ListNode Merge(ListNode m,ListNode n) {
if(m == null)
return n;
if(n == null)
return m;
ListNode answer = null;
if(m.val > n.val) {
answer = n;
n = n.next;
}else {
answer = m;
m = m.next;
}
ListNode t = answer;
while(m != null && n != null) {
if(m.val < n.val) {
answer.next = m;
m = m.next;
answer = answer.next;
}else {
answer.next = n;
n = n.next;
answer = answer.next;
}
}
if(m != null)
answer.next = m;
if(n != null)
answer.next = n;
return t;
}
}