Skip to main content

Command Palette

Search for a command to run...

Solving Leetcode Interviews in Seconds with AI: 24 Game

Updated
3 min read

Introduction

In this blog post, we will explore how to solve the LeetCode problem "679" 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

You are given an integer array cards of length 4. You have four cards, each containing a number in the range [1, 9]. You should arrange the numbers on these cards in a mathematical expression using the operators ['+', '-', '', '/'] and the parentheses '(' and ')' to get the value 24. You are restricted with the following rules: The division operator '/' represents real division, not integer division. For example, 4 / (1 - 2 / 3) = 4 / (1 / 3) = 12. Every operation done is between two numbers. In particular, we cannot use '-' as a unary operator. For example, if cards = [1, 1, 1, 1], the expression "-1 - 1 - 1 - 1" is not allowed. You cannot concatenate numbers together For example, if cards = [1, 2, 1, 2], the expression "12 + 12" is not valid. Return true if you can get such expression that evaluates to 24, and false otherwise. Example 1: Input: cards = [4,1,8,7] Output: true Explanation: (8-4) (7-1) = 24 Example 2: Input: cards = [1,2,1,2] Output: false Constraints: cards.length == 4 1 <= cards[i] <= 9

Explanation

  • High-Level Approach: The core idea is to use recursion with backtracking. We try all possible pairs of numbers, apply all four operations (+, -, *, /), and then recursively try to reach 24 with the remaining numbers. This process continues until we either reach 24 or exhaust all possibilities. We also need to handle division by zero cases.
  • Complexity: The time complexity is O(4! * 43) which simplifies to O(384). This is because there are 4! ways to arrange the numbers, and for each arrangement, there are 4 choices of operations to apply three times. The space complexity is O(1) excluding the input array because recursion depth can be at most 3.

Code

    def judgePoint24(cards):
    def solve(nums):
        if len(nums) == 0:
            return False
        if len(nums) == 1:
            return abs(nums[0] - 24) < 1e-6

        for i in range(len(nums)):
            for j in range(len(nums)):
                if i != j:
                    next_nums = []
                    for k in range(len(nums)):
                        if k != i and k != j:
                            next_nums.append(nums[k])

                    a, b = nums[i], nums[j]

                    if solve(next_nums + [a + b]):
                        return True
                    if solve(next_nums + [a - b]):
                        return True
                    if solve(next_nums + [a * b]):
                        return True
                    if b != 0 and solve(next_nums + [a / b]):
                        return True
        return False

    return solve(cards)

More from this blog

C

Chatmagic blog

2894 posts