728. 自除數——2022/3/31
阿新 • • 發佈:2022-04-01
1、題目
自除數 是指可以被它包含的每一位數整除的數。
例如,128 是一個 自除數 ,因為 128 % 1 == 0,128 % 2 == 0,128 % 8 == 0。
自除數 不允許包含 0
。
給定兩個整數left
和 right
,返回一個列表,列表的元素是範圍 [left, right] 內所有的 自除數 。
2、示例
示例 1
輸入:left = 1, right = 22
輸出:[1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 15, 22]
示例 2
輸入:left = 47, right = 85
輸出:[48,55,66,77]
3、初步解答
3.1 思路及具體步驟
- 遍歷給定的左右邊界中的所有數
- 將數轉成字串,得到數中的每一位
- 根據條件判斷是否符合,如果符合則直接新增至結果集
- 判斷條件:數對數的每一位取模都為0,則是自除數
3.2 程式碼
public List<Integer> selfDividingNumbers(int left, int right) { List<Integer> result = new ArrayList<>(); for (int i = left; i <= right; i++) { String s = "" + i; for (int j = 0; j < s.length(); j++) { if(((int)s.charAt(j) - 48) == 0){ break; } if(i % ((int)s.charAt(j) - 48) != 0){ break; } if(j == s.length() -1){ result.add(i); } } } return result; }
執行耗時:7 ms,擊敗了9.44% 的Java使用者
記憶體消耗:41.3 MB,擊敗了6.24% 的Java使用者