Smallest Greater Multiple Made of Two Digits
给三个数字, k,d1,d2. 求一个数组, 大于k, 是k的倍数,并且由d1和d2组成的最小数字.
这题就是一个个搜索d1和d2可以组成的数字, 注意一下边界条件.
class Solution {
public int findInteger(int k, int d1, int d2) {
return find(k,d1,d2, 0);
}
public int find(int k, int d1, int d2, long cur){
if(cur >= Integer.MAX_VALUE)
return -1;
if(cur > k && cur % k == 0)
return (int)cur;
int n1 = cur + d1 == 0 ? -1 : find(k, d1, d2, cur*10+d1);
int n2 = cur + d2 == 0 ? -1 : find(k, d1, d2, cur*10+d2);
if(n1 != -1 && n2 != -1)
return Math.min(n1,n2);
else if(n1 != -1)
return n1;
else
return n2;
}
}