赞
踩
这道题不需要集合放入两个链表再进行重排序,只需要两个指针,按大小进行遍历,代码如下:
- class Solution {
- /**
- * 1->3->5->7
- * 2->4->6->8->10->12
- *
- * 1->3->5->7
- * h c1
- * p
- * 2->4->6->8->10->12
- * c2
- *
- * 每次都是比较c1和c2 那个小 谁小p的next指针指向谁
- * 然后c1 或者c2 向前走一位,p来到p.next 位置
- *
- * 最后判断p.next=c1==null?c2:c1
- */
- public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
- if (list1==null||list2==null){
- return list1==null?list2:list1;
- }
-
- ListNode head=list1.val<=list2.val?list1:list2;
- ListNode cur1=head.next;
- ListNode cur2=head==list1?list2:list1;
- ListNode pre=head;
-
- while (cur1!=null&&cur2!=null){
- if (cur1.val<=cur2.val){
- pre.next=cur1;
- cur1=cur1.next;
- }else {
- pre.next=cur2;
- cur2=cur2.next;
- }
- pre=pre.next;
- }
- pre.next=cur1==null?cur2:cur1;
- return head;
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。