Welcome to Subscribe On Youtube
728. Self Dividing Numbers
Description
A self-dividing number is a number that is divisible by every digit it contains.
- For example,
128
is a self-dividing number because128 % 1 == 0
,128 % 2 == 0
, and128 % 8 == 0
.
A self-dividing number is not allowed to contain the digit zero.
Given two integers left
and right
, return a list of all the self-dividing numbers in the range [left, right]
.
Example 1:
Input: left = 1, right = 22 Output: [1,2,3,4,5,6,7,8,9,11,12,15,22]
Example 2:
Input: left = 47, right = 85 Output: [48,55,66,77]
Constraints:
1 <= left <= right <= 104
Solutions
-
class Solution { public List<Integer> selfDividingNumbers(int left, int right) { List<Integer> ans = new ArrayList<>(); for (int i = left; i <= right; ++i) { if (check(i)) { ans.add(i); } } return ans; } private boolean check(int num) { for (int t = num; t != 0; t /= 10) { int x = t % 10; if (x == 0 || num % x != 0) { return false; } } return true; } }
-
class Solution { public: vector<int> selfDividingNumbers(int left, int right) { vector<int> ans; for (int i = left; i <= right; ++i) if (check(i)) ans.push_back(i); return ans; } bool check(int num) { for (int t = num; t; t /= 10) { int x = t % 10; if (x == 0 || num % x) return false; } return true; } };
-
class Solution: def selfDividingNumbers(self, left: int, right: int) -> List[int]: return [ num for num in range(left, right + 1) if all(i != '0' and num % int(i) == 0 for i in str(num)) ]
-
func selfDividingNumbers(left int, right int) []int { check := func(num int) bool { for t := num; t != 0; t /= 10 { x := t % 10 if x == 0 || num%x != 0 { return false } } return true } var ans []int for i := left; i <= right; i++ { if check(i) { ans = append(ans, i) } } return ans }
-
impl Solution { pub fn self_dividing_numbers(left: i32, right: i32) -> Vec<i32> { let mut res = vec![]; for i in left..=right { let mut num = i; if ( loop { if num == 0 { break true; } let j = num % 10; if j == 0 || i % j != 0 { break false; } num /= 10; } ) { res.push(i); } } res } }
-
function selfDividingNumbers(left: number, right: number): number[] { const check = (x: number): boolean => { for (let y = x; y; y = Math.floor(y / 10)) { if (y % 10 === 0 || x % (y % 10) !== 0) { return false; } } return true; }; return Array.from({ length: right - left + 1 }, (_, i) => i + left).filter(check); }