array and hashmap May 8, 2023

Prime in diagonal

Time O(n) Space O(1) Open original problem

We will start our initial result with 0. Then we will iterate over the matrix and check if the current diagonal element is a prime number. If it is, we will keep the maximum between current result and the diagonal element as result. Finally, we will return the result.

class Solution:
    def diagonalPrime(self, nums: List[List[int]]) -> int:
        def isPrime(num: int) -> bool:
            if num < 2: return False
            if num == 2: return True
            if num % 2 == 0: return False
            for i in range(3, floor(sqrt(num))+1, 2):
                if num % i == 0:
                    return False
            return True

        res = 0
        length = len(nums)
        for i in range(length):
            if isPrime(nums[i][i]):
                res = max(res, nums[i][i])
            if isPrime(nums[i][length-i-1]):
                res = max(res, nums[i][length-i-1])

        return res

Time complexity: O(n)
Space complexity: O(1)