# Solving Leetcode Interviews in Seconds with AI: Add to Array-Form of Integer


	# Introduction
	In this blog post, we will explore how to solve the LeetCode problem "989" using AI. LeetCode is a popular platform for preparing for coding interviews, and with the help of AI tools like [Chatmagic](https://www.chatmagic.app), we can generate solutions quickly and efficiently - helping you pass the interviews and get the job offer without having to study for months.

	# Problem Statement
	> The array-form of an integer num is an array representing its digits in left to right order.  For example, for num = 1321, the array form is [1,3,2,1].  Given num, the array-form of an integer, and an integer k, return the array-form of the integer num + k.   Example 1:  Input: num = [1,2,0,0], k = 34 Output: [1,2,3,4] Explanation: 1200 + 34 = 1234  Example 2:  Input: num = [2,7,4], k = 181 Output: [4,5,5] Explanation: 274 + 181 = 455  Example 3:  Input: num = [2,1,5], k = 806 Output: [1,0,2,1] Explanation: 215 + 806 = 1021    Constraints:  1 <= num.length <= 104 0 <= num[i] <= 9 num does not contain any leading zeros except for the zero itself. 1 <= k <= 104  

	# Explanation
	Here's the solution:

*   **Core Idea:** Simulate the addition process digit by digit, similar to how we add numbers manually. Start from the least significant digit (rightmost part of the array) and work our way leftward, handling carries as needed.

*   **Iterate and Add:** Process the array `num` from right to left, adding the digits of `k` to the corresponding digits of `num`. The integer `k` is effectively treated as an array of digits, and we iterate through it while also iterating through `num`.

*   **Handle Carries:** Manage any carry generated by the addition. The carry will be either 0 or 1.

*   **Runtime Complexity:** O(max(N, logK)), where N is the length of `num` and K is the integer `k`.
*   **Storage Complexity:** O(max(N, logK)), due to the space used by the output list.

	
	# Code
	```python
	class Solution:
    def addToArrayForm(self, num: list[int], k: int) -> list[int]:
        n = len(num)
        result = []
        carry = 0
        i = n - 1

        while i >= 0 or k > 0 or carry > 0:
            digit_num = num[i] if i >= 0 else 0
            digit_k = k % 10 if k > 0 else 0

            current_sum = digit_num + digit_k + carry
            result.append(current_sum % 10)
            carry = current_sum // 10

            i -= 1
            k //= 10

        result.reverse()
        return result
	```
			
