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;
    }
}