LeetCode 728. 自除数

自除数 是指可以被它包含的每一位数整除的数。

例如,128 是一个 自除数 ,因为 128 % 1 == 0,128 % 2 == 0,128 % 8 == 0。
自除数 不允许包含 0 。

给定两个整数 left 和 right ,返回一个列表,列表的元素是范围 [left, right] 内所有的 自除数 。

示例 1:

输入:left = 1, right = 22
输出:[1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 15, 22]

1 <= left <= right <= 104

直接模拟即可:

class Solution {
public:
    vector<int> selfDividingNumbers(int left, int right) {
        vector<int> ans;
        for (int i = left; i <= right; ++i) {
            if (isSelfDividingNumber(i)) {
                ans.push_back(i);
            }
        }

        return ans;
    }

private:
    bool isSelfDividingNumber(int num) {
        int numBak = num;
        while (num) {
            int lastDigit = num % 10;
            if (!lastDigit) {
                return false;
            }

            if ((numBak % lastDigit) != 0) {
                return false;
            }

            num /= 10;
        }

        return true;
    }
};

如果输入的数字范围是n,每个数字的大小是m,此算法时间复杂度为O(nlgm),空间复杂度为O(1)。

posted @   epiphanyy  阅读(3)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
历史上的今天:
2022-02-19 LeetCode 2160. 拆分数位后四位数字的最小和
2020-02-19 剑指offer 学习笔记 数值的整数次方
点击右上角即可分享
微信分享提示