做快递单的网站会不会是骗人的/守游网络推广平台登陆

21. 合并两个有序链表
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例 :
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
来源:力扣(LeetCode) 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题解:
本题想法比较简单,就是创建一个新链表,然后遍历两个链表结点,哪个结点值小就往新链表后面接。
具体代码如下:
/*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode(int x) { val = x; }* }*/
class Solution {public ListNode mergeTwoLists(ListNode l1, ListNode l2) {ListNode dummy = new ListNode(0);ListNode temp = dummy;while (l1 != null && l2 != null) {if (l1.val > l2.val) {temp.next = l2;l2 = l2.next;} else {temp.next = l1;l1 = l1.next;}temp = temp.next;}temp.next = l1 == null ? l2 : l1;return dummy.next;}
}
本题还有一种递归的思路,这里给出了详细解释https://leetcode-cn.com/problems/merge-two-sorted-lists/solution/yi-kan-jiu-hui-yi-xie-jiu-fei-xiang-jie-di-gui-by-/
具体代码如下:
/*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val = val; }* ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode mergeTwoLists(ListNode l1, ListNode l2) {if (l1 == null)return l2;else if (l2 == null)return l1;else if (l1.val < l2.val) {l1.next = mergeTwoLists(l1.next, l2);return l1;} else {l2.next = mergeTwoLists(l1, l2.next);return l2;}}
}