Leetcode 21 合并两个有序链表 (链表)

编程入门 行业动态 更新时间:2024-10-24 13:27:07

Leetcode 21 合并两个有序<a href=https://www.elefans.com/category/jswz/34/1769662.html style=链表 (链表)"/>

Leetcode 21 合并两个有序链表 (链表)

Leetcode 21 合并两个有序链表 (链表)

    • 解法1 复杂的第一版本(优化大于和等于合并见方法二)
    • 解法2

注意注意:先添加元素toadd.next = list1,添加之后才可以移动指针toadd = toadd.next

解法1 复杂的第一版本(优化大于和等于合并见方法二)


程序的时间复杂度是O(n + m),其中n和m分别是两个输入链表的长度。这是因为程序需要遍历两个链表中的所有节点,直到其中一个链表遍历完为止。
🔴空间复杂度是O(1),因为程序只使用了常数级别的额外空间来存储新的链表节点和辅助指针。没有使用额外的数据结构或递归调用,所以空间复杂度是常数级别的。


/*** 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) {ListNode newlist = new ListNode(0); // 初始化一个链表节点,头节点保持不变保证后续返回ListNode toadd = newlist; //用作添加的节点,要不断后移while(list1 != null && list2 != null){if(list1.val == list2.val){toadd.next = list1;toadd = toadd.next;toadd.next = list2;toadd = toadd.next;list1 = list1.next;list2 = list2.next;} else if(list1.val < list2.val) {toadd.next = list1;toadd = toadd.next;list1 = list1.next;} else {toadd.next = list2;toadd = toadd.next;list2 = list2.next;}}if(list1 != null){toadd.next = list1;}if(list2 != null){toadd.next = list2;}return newlist.next;}
}

解法2

/*** 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) {ListNode newlist = new ListNode(0); // 初始化一个链表节点,头节点保持不变保证后续返回ListNode toadd = newlist; //用作添加的节点,要不断后移while(list1 != null && list2 != null){if(list1.val <= list2.val){  //当list1 的元素小于等于 list2,添加list1元素,list1右移toadd.next = list1;list1 = list1.next;} else {   //当list2 的元素小于 list2,添加list2元素,list2右移toadd.next = list2;list2 = list2.next;}toadd = toadd.next; // 执行操作后toadd指向下一个}if(list1 != null){toadd.next = list1;}if(list2 != null){toadd.next = list2;}return newlist.next;}
}

更多推荐

Leetcode 21 合并两个有序链表 (链表)

本文发布于:2023-12-05 18:26:48,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1664950.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:链表   两个   Leetcode

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!