2026/1/25 23:01:33
网站建设
项目流程
阜阳讯拓网站建设公司,建电影网站赚钱挣钱吗,wordpress未验证邮箱用户,怎么从建设部网站下载规范每天学习一点算法 2025/12/11
题目#xff1a;合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 递归方法看过我反转链表的应该都知道递归链表的要点。 因为是升序的链表#xff0c;所以我们每次只选当前…每天学习一点算法 2025/12/11题目合并两个有序链表将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。递归方法看过我反转链表的应该都知道递归链表的要点。因为是升序的链表所以我们每次只选当前最小的节点剩下的部分交给递归处理终止条件其中一个链表遍历完成如果list1为空遍历完了说明剩下的部分直接用list2就行如果list2为空遍历完了说明剩下的部分直接用list1就行递每次选择较小的节点向下递归调用这样每层递归节点的值都是大于等于上一层的归递归触底开始逐个拼接节点functionmergeTwoLists(list1:ListNode|null,list2:ListNode|null):ListNode|null{// 终止条件其中一个链表遍历完成if(!list1)returnlist2if(!list2)returnlist1// 每次选择较小的节点将更大的节点和自己的下一节点交给递归处理if(list1.vallist2.val){list1.nextmergeTwoLists(list1.next,list2)// 返回当前递归层选择的节点returnlist1}else{list2.nextmergeTwoLists(list1,list2.next)// 返回当前递归层选择的节点returnlist2}};还有一种方法就是遍历链表迭代出合并的结果。functionmergeTwoLists1(list1:ListNode|null,list2:ListNode|null):ListNode|null{// 创建一个节点用于迭代开头constpreheadnewListNode(-1);letprevprehead// 遍历链表直到其中一个链表结束while(list1!nulllist2!null){// 比较节点值迭代结果if(list1.vallist2.val){prev.nextlist1 list1list1.next}else{prev.nextlist2 list2list2.next}prevprev.next}// 合并剩余的部分prev.nextlist1null?list2:list1// 返回链表头returnprehead.next}题目来源力扣LeetCode