《Cracking the Coding Interview程式設計師面試金典》----連結串列A+B
時間限制:3秒 空間限制:32768K 熱度指數:3125
演算法知識視訊講解題目描述
有兩個用連結串列表示的整數,每個結點包含一個數位。這些數位是反向存放的,也就是個位排在連結串列的首部。編寫函式對這兩個整數求和,並用連結串列形式返回結果。
給定兩個連結串列ListNode* A,ListNode* B,請返回A+B的結果(ListNode*)。
測試樣例:
{1,2,3},{3,2,1}
返回:{4,4,4}
思路:題目描述為相加兩個給出的連結串列A與B,比如說:{1,2,3} + {3,2,1}需要返回一個結果連結串列為{4,4,4}。
在中間的加法運算中主要分為兩步,第一步計算每每兩個數字相加的結果,第二部提取出相應結果的進位和需要保留的個位數結果。定義兩個新的ListNode結構的新連結串列,一個用來做最後返回的連結串列頭,一個作為連結串列的儲存。因為不知道兩個給定的連結串列長度,所以判斷的時候兩個連結串列都判斷是否為NULL再進入迴圈來遍歷兩個連結串列。當遍歷時判斷一下最終返回連結串列的頭節點,下面為完整的程式碼示例:
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};*/
class Plus {
public:
ListNode* plusAB(ListNode* a, ListNode* b) {
// write code here
ListNode* pNode = NULL;
ListNode* pHead = NULL;
int carry = 0;
if (a == NULL && b == NULL)
return NULL;
while (a || b || carry>0){
int val1, val2;
val1 = a ? a->val : 0;
val2 = b ? b->val : 0;
int val = val1 + val2 + carry;
carry = val / 10;
ListNode* temp = new ListNode(val % 10);
if (pNode == NULL){
pNode = temp;
pHead = pNode;
}
else{
pNode->next = temp;
pNode = pNode->next;
}
a = a ? a->next : NULL;
b = b ? b->next : NULL;
}
pNode->next = NULL;
return pHead;
}
};
不懂的可以加我的QQ群:261035036(IT程式設計師面試寶典
群) 歡迎你的到來哦,看了博文給點腳印唄,謝謝啦~~
相關文章
- 《Cracking the Coding Interview程式設計師面試金典》----連結串列分割View程式設計師面試
- 《Cracking the Coding Interview程式設計師面試金典》----迴文連結串列View程式設計師面試
- 《Cracking the Coding Interview程式設計師面試金典》----連結串列中倒數第k個結點View程式設計師面試
- 《Cracking the Coding Interview程式設計師面試金典》----清除行列View程式設計師面試
- 《Cracking the Coding Interview程式設計師面試金典》----空格替換View程式設計師面試
- 《Cracking the Coding Interview程式設計師面試金典》----詞頻統計View程式設計師面試
- 《Cracking the Coding Interview程式設計師面試金典》----最大連續數列和View程式設計師面試
- 《Cracking the Coding Interview程式設計師面試金典》----貓狗收容所View程式設計師面試
- 《Cracking the Coding Interview程式設計師面試金典》----子串判斷View程式設計師面試
- 《Cracking the Coding Interview程式設計師面試金典》----最長合成字串View程式設計師面試字串
- 《Cracking the Coding Interview程式設計師面試金典》----數字發音View程式設計師面試
- 《Cracking the Coding Interview程式設計師面試金典》----最小調整有序View程式設計師面試
- 《Cracking the Coding Interview程式設計師面試金典》----原串翻轉View程式設計師面試
- 《Cracking the Coding Interview程式設計師面試金典》----畫素翻轉View程式設計師面試
- 《Cracking the Coding Interview程式設計師面試金典》----翻轉子串View程式設計師面試
- 《Cracking the Coding Interview程式設計師面試金典》----最大和子矩陣View程式設計師面試矩陣
- 《Cracking the Coding Interview程式設計師面試金典》----字串變換(字典樹)View程式設計師面試字串
- 《Cracking the Coding Interview程式設計師面試金典》----實時中位數View程式設計師面試
- 《Cracking the Coding Interview程式設計師面試金典》----整數對查詢View程式設計師面試
- 《Cracking the Coding Interview程式設計師面試金典》----單詞最近距離View程式設計師面試
- 《Cracking the Coding Interview程式設計師面試金典》----確定字元互異View程式設計師面試字元
- 《Cracking the Coding Interview程式設計師面試金典》----基本字串壓縮View程式設計師面試字串
- 《Cracking the Coding Interview程式設計師面試金典》----C++過載>>和View程式設計師面試C++
- 《Cracking the Coding Interview程式設計師面試金典》----最大字母矩陣(字母相同)View程式設計師面試矩陣
- 《Cracking the Coding Interview程式設計師面試金典》----最大子方塊(尋找01)View程式設計師面試
- 《Cracking the Coding Interview程式設計師面試金典》----確定兩串亂序同構View程式設計師面試
- 《Cracking the Coding Interview程式設計師面試金典》----另類加法(不得使用+-x/運算子號)View程式設計師面試
- 《Cracking the Coding Interview程式設計師面試金典》----下一個元素(下一個比他大的)View程式設計師面試
- 《Cracking the Coding Interview程式設計師面試金典》----從0到n中某個數字的個數View程式設計師面試
- 《Cracking the Coding Interview程式設計師面試金典》----下一個較大元素(所有比他大中最小的)View程式設計師面試
- 【程式設計師面試金典】洪水程式設計師面試
- 程式設計師面試金典Chapter1程式設計師面試APT
- 技術面試聖經《Cracking the Coding Interview》題解C++版面試ViewC++
- 程式設計師面試金典--筆記(精華篇)程式設計師面試筆記
- cracking the coding interview系列C#實現ViewC#
- 【程式設計師面試金典】20180801程式設計師面試
- 【程式碼隨想錄】二、連結串列:2、設計連結串列
- 智力題(程式設計師面試經典)程式設計師面試