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, 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
numfrom right to left, adding the digits ofkto the corresponding digits ofnum. The integerkis effectively treated as an array of digits, and we iterate through it while also iterating throughnum.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
numand K is the integerk.- Storage Complexity: O(max(N, logK)), due to the space used by the output list.
Code
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