php搭建网站软件下载,汉滨网站建设,网站模板可视化编辑,营业执照年审登录入口官网问题背景
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
数据约束
两个链表的节点数目范围是 [ 0 , 50 ] [0, 50] [0,50] − 100 ≤ N o d e . v a l ≤ 100 -100 \le Node.val \le 100 −100≤Node.val≤100 l 1 l_1 …问题背景
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
数据约束
两个链表的节点数目范围是 [ 0 , 50 ] [0, 50] [0,50] − 100 ≤ N o d e . v a l ≤ 100 -100 \le Node.val \le 100 −100≤Node.val≤100 l 1 l_1 l1 和 l 2 l_2 l2 均按 非递减顺序 排列
解题过程
定义一个新链表收集所给的两个链表中的节点操作比较简单。 要求构造新链表的题都可以考虑构造一个假的头节点指向结果的头节点这样就不用单独处理头节点的问题了。
具体实现
/*** 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 list1, ListNode list2) {// 构造一个假的头节点由于本题结果的链表是构造出来的不用初始化它的 next 指针ListNode dummy new ListNode(0);// 工作指针同样从头开始ListNode cur dummy;while(list1 ! null list2 ! null) {if(list1.val list2.val) {cur.next list1;list1 list1.next;} else {cur.next list2;list2 list2.next;}cur cur.next;}// 如果有链表还没遍历完整个接到新构造的链表末尾cur.next list1 ! null ? list1 : list2;return dummy.next; // 定义的时候假头节点指向结果的头节点所以返回值永远是 dummy.next}
}