Skip to content

Find Even Numbers

LeetCode Problem

# https://leetcode.com/problems/finding-3-digit-even-numbers/?envType=daily-question&envId=2025-05-12
from collections import Counter


class Solution:
    def findEvenNumbers(self, digits):
        ans = []
        for a in digits:
            for b in digits:
                for c in digits:
                    if a == 0:
                        continue  # skip leading zeroes
                    if c % 2 != 0:
                        continue  # skip odd
                    number = 100 * a + 10 * b + c  # form
                    temp = [a, b, c]
                    if Counter(temp) <= Counter(digits):
                        ans.append(number)
        return sorted(set(ans))


# s = Solution()
# print(s.findEvenNumbers(digits=[2,1,3,0]))


def findEvenNumbers(digits):
    """
    Count freq of each dig from digits
    Loop thru 100 to 998 (last even 3 dig)
    for each num-:
            split it into its digit
            check if it can be built using given digits (compare freq)

    """
    ans = []
    frequency = Counter(digits)
    for i in range(100, 1000, 2):
        split = [i // 100, (i // 10) % 10, i % 10]
        count = Counter(split)
        if all(frequency[d] >= count[d] for d in count):
            ans.append(i)
    return ans


def main():
    print(findEvenNumbers(digits=[2, 1, 3, 0]))


main()