题目描述
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
解题思路
- 定义一个头结点 head;
- 再定义一个临时结点 tmp 指向 head;
- 当 list1 或者 list2 不为空时,进行循环:
- 如果 list2 是空 或者 保证 list1 不为空时 list1 小于等于 list2:
- tmp 的下一个指针指向 list1;
- list1 走向下一个结点。
- 否则:
- tmp 的下一个指针指向 list2;
- list2 走向下一个结点。
- tmp 走向下一个结点。
- 如果 list2 是空 或者 保证 list1 不为空时 list1 小于等于 list2:
循环的判断条件中保证 list1 不为空是为了防止出现空指针问题。
public class Solution {
public ListNode Merge(ListNode list1,ListNode list2) {
ListNode head = new ListNode(0);
ListNode tmp = head;
while (list1 != null || list2 != null) {
if (list2 == null ||(list1 != null && list1.val <= list2.val)) {
tmp.next = list1;
list1 = list1.next;
} else {
tmp.next = list2;
list2 = list2.next;
}
tmp = tmp.next;
}
return head.next;
}
}
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于