https://leetcode.com/problems/add-two-numbers/
請問Leetcode第二題,
我看了解答,
ListNode dummyNode = new ListNode(0);
ListNode prev = dummyNode;
dummyNode 這裡初始了一個ListNode的值
然後prev = 這個dummyNode
想請問為什麼最後輸出dummyNode.next會是答案?
裡面的結果是如何跟dummyNode這個變數連接上的?
謝謝
由於 prev 會「一直移動」
所以要用 dummyNode 「記得原始的位置」
如下圖所示
一開始執行
迴圈第一次
迴圈第二次
迴圈第三次
如果以上的圖你都看懂了的話
就明白為什麼答案是 dummyNode.next 了
簡單說
最一開始的 prev 跟 dummyNode 指向同一個 ListNode
隨著 while 迴圈的內容,prev 一直瘋狂長,也就是 prev = prev.next
dummyNode 並沒有跟著 prev 移動,所以 dummyNode.Next 為迴圈的第一個結果,也就是迴圈內容的根節點