LeetCode 989 陣列形式的整數加法

2021-10-01 06:18:28 字數 1240 閱讀 1911

對於非負整數 x 而言,x 的陣列形式是每位數字按從左到右的順序形成的陣列。例如,如果 x = 1231,那麼其陣列形式為 [1,2,3,1]。

給定非負整數 x 的陣列形式 a,返回整數 x+k 的陣列形式。

示例 1:

輸入:a = [1,2,0,0], k = 34

輸出:[1,2,3,4]

解釋:1200 + 34 = 1234

示例 2:

輸入:a = [2,7,4], k = 181

輸出:[4,5,5]

解釋:274 + 181 = 455

示例 3:

輸入:a = [2,1,5], k = 806

輸出:[1,0,2,1]

解釋:215 + 806 = 1021

示例 4:

輸入:a = [9,9,9,9,9,9,9,9,9,9], k = 1

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

解釋:9999999999 + 1 = 10000000000

1 <= a.length <= 10000

0 <= a[i] <= 9

0 <= k <= 10000

如果 a.length > 1,那麼 a[0] != 0

思路一:k與陣列a的最後一位相加,然後k取餘,作為a的最後乙個數,然後k除以10,再與a的倒數第二個相加,然後k再取餘,作為a的倒數第二個數,k除以10........如果k先到0,則返回結果,如果k特別大,把k剩餘的數,採用頭插法,插入到陣列的頭部。時間複雜度o(n),空間複雜度o(1)

class solution 

vector::iterator it = a.begin();

while(k > 0)

return a;}};

思路二:想偷個懶,把陣列先換成數,然後兩個數相加,再把和變為陣列,結果,測試樣例中,有乙個及其長的陣列,就沒辦法了。

class solution 

long long sum = temp + k;

vectorres;

res.push_back(sum%10);

sum /= 10;

vector::iterator it = res.begin();

while(sum > 0)

return res;}};

leetcode989 陣列形式的整數加法

看到這道題剛開始我的解題思路是將整數k分解,並依次放入乙個新建好的陣列中,然後同給的陣列按位相加,標記進製。但是怎麼把整數k分解成乙個陣列難倒了我。等以後有時間我會把我的這種方法寫出來 今晚實在不想動腦筋。官方解題思路 leetcode官方題解 這個官方解題思路真的是贊啊,一看到兩數相加當然想到按位...

leetcode 989 陣列形式的整數加法

989.陣列形式的整數加法 難度簡單61 對於非負整數x而言,x的陣列形式是每位數字按從左到右的順序形成的陣列。例如,如果x 1231,那麼其陣列形式為 1,2,3,1 給定非負整數x的陣列形式a,返回整數x k的陣列形式。示例 1 輸入 a 1,2,0,0 k 34輸出 1,2,3,4 解釋 12...

LeetCode 989 陣列形式的整數加法

對於非負整數 x 而言,x 的陣列形式是每位數字按從左到右的順序形成的陣列。例如,如果 x 1231,那麼其陣列形式為 1,2,3,1 給定非負整數 x 的陣列形式 a,返回整數 x k 的陣列形式。示例 1 輸入 a 1,2,0,0 k 34 輸出 1,2,3,4 解釋 1200 34 1234 ...