LeetCode (2)兩數相加

2021-10-21 13:47:53 字數 1795 閱讀 3600

給你兩個非空的鍊錶,表示兩個非負的整數。它們每位數字都是按照逆序的方式儲存的,並且每個節點只能儲存一位數字。請你將兩個數相加,並以相同形式返回乙個表示和的鍊錶。你可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。

示例1:

輸入:l1 = [2,4,3], l2 = [5,6,4]

輸出:[7,0,8]

解釋:342 + 465 = 807.

示例2:

輸入:l1 = [0], l2 = [0]

輸出:[0]

示例3:

輸入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]

輸出:[8,9,9,9,0,0,0,1]

兩個非負整數,對其中的各數進行逆序相加並輸出。需要考慮以下幾個問題:(1)數值進製問題;(2)兩個鍊錶的長度不同。對於進製問題,當兩數相加大於10後,和模10的值為當前值,和除以10為進製值;對於長度不同的問題,假設短的鍊錶後面為零。同時,為了程式的執行,還編寫了建立鍊錶的函式用來初始化兩個非負整數的鍊錶。

源程式:

/*

問題:輸出l1和l2兩個鍊錶表示的非負整數的逆序和

*/#include

#include

using

namespace std;

//定義結構體

struct listnode

//初始化當前結點值為0,指標為空

listnode

(int x)

:val

(x),

next

(nullptr

)//初始化當前結點值為x,指標為空

listnode

(int x, listnode *next)

:val

(x),

next

(next)

//初始化當前結點值為x,指標指向下乙個結點};

//兩數之和的類方法

class

solution

else

carry = sum /10;

if(l1)

if(l2)}if

(carry >0)

return head;}}

;//建立鍊錶的函式

listnode*

createlinklist

(const vector<

int>

& v)

return head;

}int

main

(int argc,

char

*ar**)

);listnode *l2 =

createlinklist()

; listnode *l3;

solution s;

l3 = s.

addtwonumbers

(l1, l2)

;while

(l3)

cout << endl;

return0;

}

執行結果:

LeetCode2 兩數相加

嗯。今天兩個簡單題,我可能要墮落了 先貼第乙個 給定兩個非空鍊錶來表示兩個非負整數。位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將兩數相加返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。示例 輸入 2 4 3 5 6 4 輸出 7 0 8原因 342 465 807...

LeetCode 2 兩數相加

題目 給定兩個非空鍊錶來表示兩個非負整數。位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將兩數相加返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。示例 輸入 2 4 3 5 6 4 輸出 7 0 8 原因 342 465 807 解題 這題就比較簡單了,兩數相加處理好...

LeetCode 2 兩數相加

題目描述 給定兩個非空鍊錶來表示兩個非負整數。位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將兩數相加返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。題目思路 先從最低有效位也就是列表 l1 和 l2 的表頭開始相加。由於每位數字都應當處於 0 9 的範圍內,我們計算...