合并两个排序的链表
描述
输入两个递增的链表,单个链表的长度为n,合并这两个链表并使新链表中的节点仍然是递增排序的
数据范围: 0≤n≤1000
, -1000≤节点值≤1000
要求:空间复杂度O(1),时间复杂度O(n)
如输入{1,3,5},{2,4,6}时,合并后的链表为{1,2,3,4,5,6},所以对应的输出为{1,2,3,4,5,6}
示例1
1 | 输入: {1,3,5},{2,4,6} |
示例2
1 | 输入: {},{} |
示例3
1 | 输入: {-1,2,4},{1,3,4} |
题解
迭代
设置 head
为虚拟节点,放置于新链表之前,最后返回的就是 head.next
;设置 cur
为当前节点,从 head
开始
当两个链表都非空时进入循环,令新链表的下一个节点 cur.next
为val更小的节点,相应的链表节点后移一位,每次循环记得 cur
也要后移一位。如果循环结束后还有链表非空, cur
指向非空链表,返回 head.next
1 | package main |