考察链表的合并。
先解释一下程序里的非递增:
同时遍历两个链表,将他们的当前值进行比较,值比较大的就接到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; } }