合并两个有序链表(java)

时间:2025-02-12 07:48:50
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { = val; } * ListNode(int val, ListNode next) { = val; = next; } * } */ class Solution { public ListNode mergeTwoLists(ListNode list1, ListNode list2) { //如果有一个是null 直接返回另外一个就行了,无论另外一个是不是null if(list1 == null){ return list2; } if(list2 == null){ return list1; } //两个指针去遍历两个链表 ListNode p1 = list1; ListNode p2 = list2; //辅助链表 ListNode temp = new ListNode(-1); ListNode p = temp; while(p1 != null && p2 != null){ if(p1.val > p2.val){ p.next = p2; p2 = p2.next; }else{ p.next = p1; p1 = p1.next; } p = p.next; } //经过上面的循环,两个链表肯定有一个走到头了,还有一个没连完,因此下面两个判断只会走其中一个。 if(p1 != null){ p.next = p1; } if(p2 != null){ p.next = p2; } //最后返回 return temp.next; } }