Leetcode Leetcode989。配列形式の整数加算(python)

トピック:

非負の整数Xの場合、Xの配列形式は、左から右への各桁によって形成される配列です。たとえば、X = 1231の場合、その配列形式は[1,2,3,1]です。
非負の整数Xの配列形式Aが与えられた場合、整数X + Kの配列形式を返します。

Example_1:

入力:A = [1,2,0,0]、K = 34
出力:[1,2,3,4]
説明:1200 + 34 = 1234

Example_2:

入力:A = [2,7,4]、K = 181
出力:[4,5,5]
説明:274 + 181 = 455

Example_3:

入力:A = [2,1,5]、K = 806
出力:[1,0,2,1]
説明:215 + 806 = 1021

Example_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

Solution_1:

リストAを別の桁でトラバースして出力します
。Aを
数値に変換してから、Kの値を加算し、出力用のリストに変換します
。操作効率が低い

Code_1:

class Solution:
    def addToArrayForm(self, A: List[int], K: int) -> List[int]:
        ans = 0
        n = len(A)
        for i in range(len(A)):
            ans += (A[n - i - 1] * 10 ** (i))
        
        ans += K
        res = list(str(ans))
        return res

Solution_2:

元のリストの値を空の文字列に少しずつ追加し
、文字列を整数形式に変換します
最後に、kを追加
してリストに変換し、出力します

Code_2:

class Solution:
    def addToArrayForm(self, A: List[int], K: int) -> List[int]:
        ans = int(''.join(str(i) for i in A))
        ans += K
        return(list(str(ans)))

Result_2:
ここに画像の説明を挿入

Solution_3:

別のアイデアは、問題解決の2番目のアイデアを指します。
最下位の
にKを追加し、この桁に最後の桁の数字を入れます。
その後、Kを1減算し、Aを判断して
上記繰り返すための桁数。プロセス
同時に、Kの次数がAの次数よりも大きい場合は、A
の左側(桁違い)にゼロのプレースホルダーを配置し、上記のプロセスを繰り返します。
最後に、上位キューAがリスト出力に変換されます。

Code_3:

class Solution:
    def addToArrayForm(self, A: List[int], K: int) -> List[int]:
        i = len(A) - 1
        A = collections.deque(A)

        while K:
            A[i] += K
            K, A[i] = A[i] // 10, A[i] % 10
            i -= 1

            if i < 0 and K:
                A.appendleft(0)
                i = 0
        
        return list(A)

Result_3:
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/weixin_50791900/article/details/112975745