赞
踩
目录
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例 1:
输入:l1 = [1,2,4], l2 = [1,3,4]
输出:[1,1,2,3,4,4]
示例 2:
输入:l1 = [], l2 = []
输出:[]
示例 3:
输入:l1 = [], l2 = [0]
输出:[0]
提示:
- 两个链表的节点数目范围是 [0, 50]
- -100 <= Node.val <= 100
- l1 和 l2 均按 非递减顺序 排列
首先我们可以新建一个新链表,然后同时循环遍历list1和list2,因为他们是两条升序链表,所以在循环中可以通过比较这两条链表的结点元素的大小,将较小的尾插至新链表中,当其中一条链表遍历完时,将另一条链表剩下的结点全部接到新链表后面即可。
注意:
设置新链表时,要设置头结点(ansHead)和尾结点(ansLast),头结点是为了返回新链表,尾结点是为了进行尾插元素的操作。
返回值是头结点的下一结点,即合并两个链表的开始。
return ansHead.next;
画图举例理解:
- class Solution {
- public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
- ListNode head1=list1;
- ListNode head2=list2;
-
- ListNode ansHead=new ListNode();
- ListNode ansLast=ansHead;
-
- while(head1!=null&&head2!=null){
- if(head1.val<=head2.val){
- ansLast.next=head1;
- ansLast=ansLast.next;
- head1=head1.next;
- }else{
- ansLast.next=head2;
- ansLast=ansLast.next;
- head2=head2.next;
- }
- }
-
- if(head1!=null){
- ansLast.next=head1;
- }else{
- ansLast.next=head2;
- }
-
- return ansHead.next;
-
- }
- }
如想了解链表(LinkedList)相关知识,请查阅:
如有建议或想法,欢迎一起讨论学习~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。