Back to all solutions
#1999 - Smallest Greater Multiple Made of Two Digits
Problem Description
Given three integers, k, digit1, and digit2, you want to find the smallest integer that is:
- Larger than k,
- A multiple of k, and
- Comprised of only the digits digit1 and/or digit2.
Return the smallest such integer. If no such integer exists or the integer exceeds the limit of a signed 32-bit integer (231 - 1), return -1.
Solution
/**
* @param {number} k
* @param {number} digit1
* @param {number} digit2
* @return {number}
*/
var findInteger = function(k, digit1, digit2) {
const minDigit = Math.min(digit1, digit2);
const maxDigit = Math.max(digit1, digit2);
const queue = minDigit !== maxDigit ? [minDigit, maxDigit] : [minDigit];
while (queue.length > 0) {
const current = queue.shift();
if (current === 0 || current > 2147483647) {
continue;
}
if (current > k && current % k === 0) {
return current;
}
queue.push(current * 10 + minDigit);
if (minDigit !== maxDigit) {
queue.push(current * 10 + maxDigit);
}
}
return -1;
};