Merge Two Sorted Lists
问题简介:合并两个已排序的链表并将其作为新链表返回
举例:
输入: 1->3->5, 1->2->4
输出: 1->1->2->3->4->5
链表结构:
//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) {
if(l1 == null)return l2;
if(l2 == null)return l1;
ListNode node = new ListNode(0);
ListNode listNode = node;
int temp = 0;
while(l1!=null||l2!=null){
if(l1 == null||(l2!=null&&l1.val>l2.val))
{temp = l2.val;
l2 = l2.next;}
else{
temp = l1.val;
l1 = l1.next;}
node.next =new ListNode(temp);
node = node.next;
}
return listNode.next;
}
}
复杂度分析:
时间复杂度:o(n) 遍历一遍两个链表的长度
空间复杂度:o(n)定义一个变量,定义两个链表长度的节点
小白刷题之路,请多指教— — 要么大器晚成,要么石沉大海