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 because 128 % 1 == 0, 128 % 2 == 0, and 128 % 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); } 

All Problems

All Solutions