Self Dividing Numbers 自除數
阿新 • • 發佈:2018-12-22
自除數 是指可以被它包含的每一位數除盡的數。
例如,128 是一個自除數,因為 128 % 1 == 0
,128 % 2 == 0
,128 % 8 == 0
。
還有,自除數不允許包含 0 。
給定上邊界和下邊界數字,輸出一個列表,列表的元素是邊界(含邊界)內所有的自除數。
示例 1:
輸入: 上邊界left = 1, 下邊界right = 22 輸出: [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 15, 22]
注意:
- 每個輸入引數的邊界滿足
1 <= left <= right <= 10000
。
思路:由於自除數需要對自己的每一位進行操作,而且這裡給出的是一個範圍內求自除數,所以複雜度是O(m*n),其中m是right-left+1,n是這個範圍內的數,對應每個數平均有多少個數字。
參考程式碼:
class Solution { public: vector<int> selfDividingNumbers(int left, int right) { vector<int> res; for (int i = left,n=i; i <= right; i++) { for (n=i; n > 0; n /= 10) { if (!(n % 10) || i % (n % 10)) break; } if (!n) res.push_back(i); } return res; } };