洛阳建站推广公司,广告平面设计培训班学费一般多少,知名商城网站建设报价,网页制作如何添加背景图片题解一#xff1a; 迭代#xff1a;分别用两个指针遍历两段链表#xff0c;逐步比较两链表的节点#xff0c;将值较大的节点存入新链表#xff0c;同时指针移动#xff0c;直到某段链表遍历结束#xff0c;将另一段链表剩余的节点存入新链表。需要注意存入新链表时要用新…
题解一 迭代分别用两个指针遍历两段链表逐步比较两链表的节点将值较大的节点存入新链表同时指针移动直到某段链表遍历结束将另一段链表剩余的节点存入新链表。需要注意存入新链表时要用新链表.next来存避免新链表指针出错。
import java.awt.*;class Solution {public ListNode mergeTwoLists(ListNode list1, ListNode list2) {if (list1 null) return list2;else if (list2 null) return list1;ListNode result new ListNode();ListNode temp result;ListNode p1 list1, p2 list2;while (p1 ! null p2 ! null) {if (p1.val p2.val) {temp.next p1;p1 p1.next;} else {temp.next p2;p2 p2.next;}temp temp.next;}if (p1 null p2 ! null) {while (p2 ! null) {temp.next p2;p2 p2.next;temp temp.next;}} else if (p1 ! null p2 null) {while (p1 ! null) {temp.next p1;p1 p1.next;temp temp.next;}}return result.next;}
}
题解二 递归将迭代的过程通过递归来实现但由于递归核心代码是从链表末端开始执行的所以无需考虑链表节点的覆盖问题不容易出错但递归也较难理解。具体递归步骤是先确定结束条件判断两段链表是否为null。再比较传入的两节点值记做节点a、b将较大值节点a指向下一节点这里下一节点可能是和它比较的节点b或者它原先的下一节点a.next具体要进行下一步比较所以我们将节点b和a.next作为参数递归调用并将较大的节点作为返回值。附上图解来源. - 力扣LeetCode import java.awt.*;class Solution {public ListNode F(ListNode list1, ListNode list2) {if (list1 null) return list2;//递归结束条件else if (list2 null) return list1;if (list1.val list2.val) {//调用递归并返回list1.next F(list1.next, list2);return list1;} else {list2.next F(list1, list2.next);return list2;}}public ListNode mergeTwoLists(ListNode list1, ListNode list2) {ListNode result F(list1, list2);return result;}
}