Skip to main content

Command Palette

Search for a command to run...

Solving Leetcode Interviews in Seconds with AI: Prime In Diagonal

Updated
3 min read

Introduction

In this blog post, we will explore how to solve the LeetCode problem "2614" 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 a 0-indexed two-dimensional integer array nums. Return the largest prime number that lies on at least one of the diagonals of nums. In case, no prime is present on any of the diagonals, return 0. Note that: An integer is prime if it is greater than 1 and has no positive integer divisors other than 1 and itself. An integer val is on one of the diagonals of nums if there exists an integer i for which nums[i][i] = val or an i for which nums[i][nums.length - i - 1] = val. In the above diagram, one diagonal is [1,5,9] and another diagonal is [3,5,7]. Example 1: Input: nums = [[1,2,3],[5,6,7],[9,10,11]] Output: 11 Explanation: The numbers 1, 3, 6, 9, and 11 are the only numbers present on at least one of the diagonals. Since 11 is the largest prime, we return 11. Example 2: Input: nums = [[1,2,3],[5,17,7],[9,11,10]] Output: 17 Explanation: The numbers 1, 3, 9, 10, and 17 are all present on at least one of the diagonals. 17 is the largest prime, so we return 17. Constraints: 1 <= nums.length <= 300 nums.length == numsi.length 1 <= nums[i][j] <= 4*106

Explanation

Here's the breakdown of the solution:

  • Diagonal Traversal and Number Collection: Iterate through the matrix, collecting numbers present on either of the diagonals. Handle the case where the matrix has odd dimensions to avoid duplicate entries from the center element being included twice.

  • Primality Test: Create an efficient primality test function using the trial division method. The primality test function checks if an integer n is prime by iterating from 2 up to the square root of n, returning False if any number divides n evenly.

  • Largest Prime Identification: Iterate through the set of numbers collected from the diagonals, checking each number for primality using the defined primality test function. Keep track of the largest prime number encountered, updating it when a larger prime is found.

  • Return the Result: If any prime numbers were found in the diagonals then return the largest prime, otherwise return 0.

  • Complexity Analysis: The solution has a time complexity of O(N * sqrt(M)), where N is the length of the nums matrix and M is the maximum value in nums, and a space complexity of O(N), where N is the length of nums.

Code

    import math

def largest_prime_diagonal(nums):
    """
    Finds the largest prime number that lies on at least one of the diagonals of a given 2D integer array.

    Args:
        nums: A 0-indexed two-dimensional integer array.

    Returns:
        The largest prime number that lies on at least one of the diagonals of nums. Returns 0 if no prime is present on any of the diagonals.
    """

    def is_prime(n):
        if n <= 1:
            return False
        for i in range(2, int(math.sqrt(n)) + 1):
            if n % i == 0:
                return False
        return True

    diagonal_numbers = set()
    n = len(nums)

    for i in range(n):
        diagonal_numbers.add(nums[i][i])
        diagonal_numbers.add(nums[i][n - 1 - i])

    largest_prime = 0
    for num in diagonal_numbers:
        if is_prime(num):
            largest_prime = max(largest_prime, num)

    return largest_prime

More from this blog

C

Chatmagic blog

2894 posts