除数無限のアルゴリズムので、

除数ので、

各々は、分割することができる含まれたビットの数を指します。
例えば、128以降128%2 == 1 == 0128パーセント0128パーセント8 == 0ので、除数です。
また、除数ので、ゼロが含まれていません。
デジタル上部所与及び下限、リストのすべての要素のリストは、内側境界(包括的)から除数で出力します。

例1:

入力:
上限左= 1、下限右= 22
出力:[1、2、3、4、5、6、7、8、9、11、12、15、22]

注意:

各境界入力パラメータを満たす1 <=左<=右<= 10000。

ソリューション:

与えられた範囲内の各数値については、我々は直接除数である数から決定されます。
定義により、我々は、最初の非ゼロ数かどうかを決定し、その後数は数で割り切れるするとき、非ゼロか否かを判断します。
例えば、128のために、我々はDを決定する必要があります!= 0 && 128パーセントD == 0、 そしてd = 1、2、8。
この問題に対する簡単な解決策は、モジュロ演算を実行する変換バック整数N%のD == 0をチェックし、文字列に番号を変換することです。
また、最後の桁の整数を取って、10で数を保つことができます。コードセクションでコメントとして。

class Solution {
    public List<Integer> selfDividingNumbers(int left, int right) {
        ArrayList result=new ArrayList();
        for(int i=left; i<=right; i++){
            if(isSelfDiv(i)){
                result.add(i);
            }
        }
        return result;
    }
    public boolean isSelfDiv(int num){
        for(char c: String.valueOf(num).toCharArray()){
            //int n=Integer.parseInt(c+"");//转换效率低
            //if(n==0||num%n!=0){
            if(c=='0'||num % (c - '0') != 0){
                return false;
            }
        }
        return true;
    }
}
公開された125元の記事 ウォンの賞賛236 ・は 20000 +を見て

おすすめ

転載: blog.csdn.net/qq_33709508/article/details/103867463