トピック:
非負の整数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: