給定兩個用鍊錶表示的整數,每個節點包含乙個數字。
這些數字是反向存放的,也就是個位排在鍊錶首部。
編寫函式對這兩個整數求和,並用鍊錶形式返回結果。
示例:輸入:(7 -> 1 -> 6) + (5 -> 9 -> 2),即617 + 295
輸出:2 -> 1 -> 9,即912
採用原地演算法,比較兩個鍊錶長度,如果長度一致,那麼鍊錶相加到任一鍊錶,計算最後一位相加進製情況,如果是1,則在兩個鍊錶任選一多分配乙個長度,並賦值為1。
如果乙個鍊錶長度大於另乙個鍊錶,思路一致,只不過要確認短的鍊錶何時終止。
/**
* definition for singly-linked list.
* struct listnode ;
*/struct listnode*
addtwonumbers
(struct listnode* l1,
struct listnode* l2)
p1=l1;
while
(p2)
p2=l2;
//printf("%d %d\n",len1,len2);
if(len1==len2)
else
if(p1->next==
null
) p1=p1->next;
p2=p2->next;}if
(carry==0)
else
}else
if(len1else
p1=p1->next;
p2=p2->next;}if
(carry==0)
while
(p2)
else
if(p2->next==
null
) p2=p2->next;}if
(carry==0)
return l2;
else
}else
else
p1=p1->next;
p2=p2->next;
}while
(p1)
else
else}if
(p1->next==
null
) p1=p1->next;}if
(carry==0)
else
}return l1;
}
執行用時 :24 ms, 在所有 c 提交中擊敗了32.52% 的使用者
記憶體消耗 :6.9 mb, 在所有 c 提交中擊敗了100.00%的使用者
leetcode 2鍊錶相加
給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3 5 6 4 輸出 ...
演算法學習 鍊錶相加
題目 給定兩個鍊錶,分別表示兩個非負整數。他們的數字逆序儲存在鍊錶中,且每個節點只儲存乙個數字,計算兩個數的和,並且返回和的煉表頭指標。如 輸入2 4 3 5 6 4,輸出 7 0 8 此題為簡單的數學加法計算和簡單的鍊錶操作的結合,很簡單,直接附上 include stdafx.h include...
Leetcode NO 2 兩數相加 鍊錶相加
給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3 5 6 4 輸出 ...