📜  向量<int>selfDividingNumbers(int left, int right) (1)

📅  最后修改于: 2023-12-03 14:50:41.691000             🧑  作者: Mango

selfDividingNumbers函数介绍

本函数是一个返回self-dividing number(自除数)的向量的函数。自除数是满足一个数字能被其每一个数位整除的数字。例如,21是自除数,因为2和1都能整除它;而22不是自除数,因为它不能被2整除。

函数声明
vector<int> selfDividingNumbers(int left, int right);

函数接收两个整数参数,其中left是左端点,right是右端点。函数将会返回一个包含所有在[left, right]范围内的自除数的向量。

函数实现

本函数的实现主要采用了暴力枚举的方法。具体来说,对于范围内的每一个数字,我们将它转化成字符串,然后逐位判断它是否能够被整除。最后,如果该数字是自除数,我们就将其加入到答案向量中。

以下是函数实现的代码片段:

vector<int> selfDividingNumbers(int left, int right) {
    vector<int> res;
    for (int i = left; i <= right; i++) {
        int num = i;
        bool flag = true;
        while (num) {
            int digit = num % 10;
            if (digit == 0 || i % digit != 0) {
                flag = false;
                break;
            }
            num /= 10;
        }
        if (flag) res.push_back(i);
    }
    return res;
}
总结

本函数是一个简单实用的函数,可以用来求解一个范围内的所有自除数。由于该函数的时间复杂度为O(NlogN),因此可以处理小规模的输入数据。如果需要处理更大的数据,我们需要使用更加高效的算法来实现。