您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“l(fā)eetcode如何實(shí)現(xiàn)數(shù)組形式的整數(shù)加法”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“l(fā)eetcode如何實(shí)現(xiàn)數(shù)組形式的整數(shù)加法”吧!
對(duì)于非負(fù)整數(shù) X 而言,X 的數(shù)組形式是每位數(shù)字按從左到右的順序形成的數(shù)組。例如,如果 X = 1231,那么其數(shù)組形式為 [1,2,3,1]。
給定非負(fù)整數(shù) X 的數(shù)組形式 A,返回整數(shù) X+K 的數(shù)組形式。
示例 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
從右向左遍歷A,K每次除10取余,然后將二者相加;
carry是進(jìn)位,如果相加完的結(jié)果大于10,就除以10,得到新carry;
相加完的結(jié)果除10取余得到該位的數(shù)字;
存在進(jìn)位或者K的位數(shù)大于A的位數(shù),就把高位也變?yōu)閘ist;
最后高位在前,A在后(A已經(jīng)是相加完的結(jié)果),二者相加得到結(jié)果;
class Solution: def addToArrayForm(self, A: list, K: int) -> list: carry = 0 for i in range(len(A) - 1, -1, -1): tmp = A[i] + K % 10 + carry carry = tmp // 10 A[i] = tmp % 10 K //= 10 # 高位存在進(jìn)位 或者 K的位數(shù)大于A的位數(shù) if carry == 1 or K != 0: high_num = K + carry # 高位也需要變?yōu)閘ist tmp = [] while high_num: tmp = [high_num % 10] + tmp high_num //= 10 A = tmp + A return A if __name__ == '__main__': s = Solution() A = [2, 1, 5] K = 9806 ans = s.addToArrayForm(A, K) print(ans)
到此,相信大家對(duì)“l(fā)eetcode如何實(shí)現(xiàn)數(shù)組形式的整數(shù)加法”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。