Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

บวกค่ากับอาร์เรย์รูปแบบจำนวนเต็มใน Python


ให้จำนวนเต็มในรูปอาร์เรย์ ตัวอย่าง 534 → [5,3,4] บวกค่า K เข้าไป คืนอาร์เรย์ตัวเลขของผลลัพธ์

ตัวอย่าง: [5,3,4] + 78 = 612 → [6,1,2]

ขั้นตอนการแก้ปัญหา

  1. แปลงอาร์เรย์เป็นสตริงต่อกัน "".join(str(i) for i in A)
  2. แปลงเป็น int บวก K
  3. แปลงกลับเป็นสตริง แล้วแยกแต่ละตัวเป็น 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)