對於非負整數 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 ...