想问下你在刷完题,尽自己能力写了,没解决问题,然后看答案可以解决的能达到学习效果吗?
来源:5-7 更多和链表相关的问题

慕瓜6217094
2021-07-26
波波老师关于刷题想请教下问题。因为是刚学习链表,不太熟悉。看了下leetcode上的题,我能把主要逻辑写出来,但是有一些细节有问题导致代码提交不成功。这种情况下我看一下官方题解,就可以解出来了。想问下你在刷完题,尽自己能力写了,没解决问题,然后看答案可以解决的能达到学习效果吗?
leetcode 21 号题目,合并两个链表
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
if ( l1 == null && l2 == null)
return null;
if ( l1 == null)
return l2;
if ( l2 == null)
return l1;
ListNode head = new ListNode(-1);
ListNode cur = head;
while ( l1 != null && l2 != null) {
if ( l1.val <= l2.val) {
cur.next = new ListNode(l1.val);
l1 = l1.next;
cur = cur.next;
} else {
cur.next = new ListNode(l2.val);
l2 = l2.next;
cur = cur.next;
}
if ( l1 == null ) {
while ( l2 != null) {
cur.next = new ListNode( l2.val);
cur = cur.next;
l2 = l2.next;
}
}
if ( l2 == null) {
while ( l1 != null) {
cur.next = new ListNode(l2.val);
cur = cur.next;
l1 = l1.next;
}
}
}
head = head.next;
return head;
}
我的while大概逻辑和题解是一致的,就是处理一些边缘问题,就比如,遍历完一个链表可能一个已经为空了,另一个链表还有元素。
我自己想的是在while里面添加个判断,如果存在这种情况。就在判断里用循环将节点依次加入待返回的链表。
而官网题解是存在这种情况,直接将剩余的非空链表挂接在待返回的链表。
像这样我看答案就理解了
写回答
1回答
-
可以的,没问题的。答案存在的目的就是让大家学习借鉴的。
只要你把握好:
1)如果不是思路上的不会,而是代码书写上的问题,先尝试尽量调试自己的程序,即便自己不能写出正确的代码,也应该能理解自己的代码的问题在哪里;
2)看正确的答案,除了看到一个正确答案以外,一定要关注,对于自己写程序时,不会处理,或者处理有问题的地方,别人的程序到底是怎么处理的,自己写的时候遗漏了什么,或者哪里想错了。一定要总结。总结至关重要。
我觉得只要把握好这些,就没有问题:)
继续加油!:)
10
相似问题