【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)

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