考察链表的合并。

先解释一下程序里的非递增:

同时遍历两个链表,将他们的当前值进行比较,值比较大的就接到res链表上。

temp初始去指向res,temp不断往后加上两个链表中的当前节点的较大的节点,直到两个链表发生遍历结束的情况,这就是9行while循环条件的由来。

当发生链表遍历结束的时候,因为是非递增排序,所以直接将另一个没遍历完的链表接到temp后面即可。注意返回的是res这个新的链表的头结点的next(首元结点)

import java.util.*;

public class Solution {
    
    public ListNode mergeEnergyValues (ListNode l1, ListNode l2) {
        // write code here
        ListNode res = new ListNode(-1);
        ListNode temp = res;
        while(l1!=null&&l2!=null){//两个链表都还没有遍历完的时候
            if(l1.val>=l2.val){
                temp.next = l1;
                l1 = l1.next;//更新l1的指向
            }else{
                temp.next = l2;
                l2 = l2.next;//更新l2的指向
            }
            temp = temp.next; //注意更新temp
        }
        if(l1!=null){ //说明l2遍历完了
            temp.next = l1;
        }
        if(l2!=null){ //说明l1遍历完了
            temp.next = l2;
        }
        return res.next;
    }
}