class Solution(object):
def __init__(self):
self.res = []
self.li = []
def findEvenNumbers(self, digits):
digits.sort()
nums = [False] * len(digits)
self.solut(nums, digits)
return self.res
def solut(self, nums, digits):
if len(self.li) == 3:
if self.li[0] != 0 and self.li[2] % 2 == 0:
num = self.li[0] * 100 + self.li[1] * 10 + self.li[2]
if num not in self.res: # Avoid duplicates
self.res.append(num)
return
for i in range(len(digits)):
if (nums[i] or
(len(self.li) == 0 and digits[i] == 0) or
(len(self.li) == 2 and digits[i] % 2 != 0) or
(i > 0 and digits[i] == digits[i-1] and not nums[i-1])):
continue
self.li.append(digits[i])
nums[i] = True
self.solut(nums, digits)
self.li.pop()
nums[i] = False