সমস্যা বিবরণ
একটি নম্বর অ্যারে ফর্মে দেওয়া আছে (যেমন 534 → [5,3,4])। এই নম্বরের সাথে একটি ইন্টিজার K যোগ করে ফলাফল অ্যারে ফর্মে ফেরত দিতে হবে।
উদাহরণ: [5,3,4] + 78 = 612 → [6,1,2]
সমাধানের পদ্ধতি
- অ্যারে ডিজিটগুলো স্ট্রিং-এ কনভার্ট করে কনক্যাটেনেট করুন।
- স্ট্রিংকে ইন্টিজার বানান, K যোগ করুন।
- ফলাফল স্ট্রিং-এ কনভার্ট করে প্রতিটি ডিজিট ইন্টিজার বানিয়ে লিস্টে ফেরত দিন।
পাইথন উদাহরণ
class Solution(object):
def addToArrayForm(self, A, K):
num_A = int(''.join(str(d) for d in A))
res = list(str(num_A + K))
return list(map(int, res))
ob1 = Solution()
print(ob1.addToArrayForm([5,3,4], 78))
ইনপুট
[5,3,4] 78
আউটপুট
[6, 1, 2]
ম্যানুয়াল অডিশন (O(n) টাইম, O(1) এক্সট্রা স্পেস - আউটপুট বাদে)
def addToArrayForm(A, K):
i = len(A) - 1
carry = 0
res = []
while i >= 0 or K > 0:
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
i -= 1
K //= 10
if carry:
res.append(carry)
return res[::-1]
পাইথন ৩.৮+ walrus operator ব্যবহার করে
def addToArrayForm(A, K):
res = []
i = len(A) - 1
while i >= 0 or K:
digit_a = A[i] if i >= 0 else 0
total = digit_a + (K % 10)
res.append(total % 10)
K = total // 10 + K // 10
i -= 1
return res[::-1]