其实再次回想起来做,就明白linked list为什么是这种写法:
head.next
, cur.next
: 新创建的节点cur
, next
都是值为0
的节点,e.g. cur
往后移动生成了这个linked list, 所以最后是返回head.xxx
;
- 顺着linked list移动的过程中,因为每个node实际上本来就只有
value
和next
指针两个东西,如果不是new ListNode(x)
, 那么就只用管next
来创建这整个linked list;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| class Solution { public ListNode mergeTwoLists(ListNode l1, ListNode l2) { ListNode cur = new ListNode(0), head = cur; while (l1 != null && l2 != null) { if (l1.val < l2.val) { cur.next = l1; l1 = l1.next; } else { cur.next = l2; l2 = l2.next; } cur = cur.next; } cur.next = (l1 == null) ? l2 : l1; return head.next; } }
|