ให้จำนวนเต็มในรูปอาร์เรย์ ตัวอย่าง 534 → [5,3,4] บวกค่า K เข้าไป คืนอาร์เรย์ตัวเลขของผลลัพธ์
ตัวอย่าง: [5,3,4] + 78 = 612 → [6,1,2]
ขั้นตอนการแก้ปัญหา
- แปลงอาร์เรย์เป็นสตริงต่อกัน
"".join(str(i) for i in A) - แปลงเป็น int บวก K
- แปลงกลับเป็นสตริง แล้วแยกแต่ละตัวเป็น int
ตัวอย่างโค้ด
class Solution(object):
def addToArrayForm(self, A, K):
num_A = int(''.join(str(i) for i in A))
res = list(str(num_A + K))
res = list(map(int, res))
return res
ob1 = Solution()
print(ob1.addToArrayForm([5,3,4], 78))
อินพุต
[5,3,4] 78
เอาต์พุต
[6,1,2]
วิธีแก้แบบไม่แปลงสตริง (Digit by Digit)
def addToArrayForm(A, K):
i = len(A) - 1
carry = 0
res = []
while i >= 0 or K > 0 or carry:
digit_a = A[i] if i >= 0 else 0
digit_k = K % 10
total = digit_a + digit_k + carry
res.append(total % 10)
carry = total // 10
K //= 10
i -= 1
return res[::-1]
# ใช้ได้กับตัวเลขใหญ่เกินกว่า Python int limit (แม้ Python int จะ unlimited)