【Leetcode】728. Self Dividing Numbers

题目地址:

https://leetcode.com/problems/self-dividing-numbers/

给定一个正整数区间范围[l,r][l, r],挑出所有能被其各个位上的数整除的数字(不允许其中某一位为00)。直接逐个判断即可。代码如下:

import java.util.ArrayList;
import java.util.List;

public class Solution {
    public List<Integer> selfDividingNumbers(int left, int right) {
        List<Integer> res = new ArrayList<>();
        for (int i = left; i <= right; i++) {
            if (isValid(i)) {
                res.add(i);
            }
        }
        
        return res;
    }
    
    private boolean isValid(int n) {
        int m = n;
        while (m != 0) {
        	// 取出个位数
            int k = m % 10;
            // 如果是0或者不能整除则返回false
            if (k == 0 || n % k != 0) {
                return false;
            }
            
            m /= 10;
        }
        
        return true;
    }
}

时间复杂度O(rl)O(r-l),空间O(1)O(1)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章