问题

该文章的最新版本已迁移至个人博客【比特飞】,单击链接 https://www.byteflying.com/archives/3889 访问。

自除数 是指可以被它包含的每一位数除尽的数。

例如,128 是一个自除数,因为 128 % 1 == 0,128 % 2 == 0,128 % 8 == 0。

还有,自除数不允许包含 0 。

给定上边界和下边界数字,输出一个列表,列表的元素是边界(含边界)内所有的自除数。

输入: 上边界left = 1, 下边界right = 22

输出: [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 15, 22]

注意:每个输入参数的边界满足 1 <= left <= right <= 10000。


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.

Also, a self-dividing number is not allowed to contain the digit zero.

Given a lower and upper number bound, output a list of every possible self dividing number, including the bounds if possible.

Input: left = 1, right = 22

Output: [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 15, 22]

Note:The boundaries of each input argument are 1 <= left <= right <= 10000.


示例

该文章的最新版本已迁移至个人博客【比特飞】,单击链接 https://www.byteflying.com/archives/3889 访问。

public class Program {public static void Main(string[] args) {var left = 1;var right = 21;var res = SelfDividingNumbers(left, right);ShowArray(res);left = 3;right = 36;res = SelfDividingNumbers2(left, right);ShowArray(res);Console.ReadKey();}private static void ShowArray(IList<int> array) {foreach(var num in array) {Console.Write($"{num} ");}Console.WriteLine();}private static IList<int> SelfDividingNumbers(int left, int right) {var res = new List<int>();for(var i = left; i <= right; i++) {if(IsSelfDividingNumber(i)) res.Add(i);}return res;}private static bool IsSelfDividingNumber(int num) {//用字符串索引取位var length = num.ToString().Length;for(var i = 0; i < length; i++) {var bit = int.Parse(num.ToString()[length - i - 1].ToString());if(bit == 0 || num % bit != 0) return false;}return true;}private static IList<int> SelfDividingNumbers2(int left, int right) {var res = new List<int>();for(var i = left; i <= right; i++) {if(IsSelfDividingNumber2(i)) res.Add(i);}return res;}private static bool IsSelfDividingNumber2(int num) {//用传统取余式取位var number = num;while(number > 0) {var bit = number % 10;if(bit == 0 || num % bit != 0) return false;number /= 10;}return true;}}

以上给出2种算法实现,以下是这个案例的输出结果:

该文章的最新版本已迁移至个人博客【比特飞】,单击链接 https://www.byteflying.com/archives/3889 访问。

1 2 3 4 5 6 7 8 9 11 12 15
3 4 5 6 7 8 9 11 12 15 22 24 33 36

分析:

显而易见,以上2种算法的时间复杂度均为: 

C#LeetCode刷题之#728-自除数(Self Dividing Numbers)相关推荐

  1. LeetCode刷题实战(2):Add Two Numbers

    题2描述: 2 Add Two Numbers 29.10% Medium You are given two non-empty linked lists representing two non- ...

  2. C#LeetCode刷题-数学

    数学篇 # 题名 刷题 通过率 难度 2 两数相加 29.0% 中等 7 反转整数 C#LeetCode刷题之#7-反转整数(Reverse Integer) 28.6% 简单 8 字符串转整数 (a ...

  3. LeetCode刷题记录4——67. Add Binary(easy)

    LeetCode刷题记录4--67. Add Binary(easy) 目录 LeetCode刷题记录4--67. Add Binary(easy) 题目 语言 思路 后记 题目 今天这题是与字符串相 ...

  4. LeetCode刷题记录15——21. Merge Two Sorted Lists(easy)

    LeetCode刷题记录15--21. Merge Two Sorted Lists(easy) 目录 LeetCode刷题记录15--21. Merge Two Sorted Lists(easy) ...

  5. LeetCode刷题记录14——257. Binary Tree Paths(easy)

    LeetCode刷题记录14--257. Binary Tree Paths(easy) 目录 前言 题目 语言 思路 源码 后记 前言 数据结构感觉理论简单,实践起来很困难. 题目 给定一个二叉树, ...

  6. LeetCode刷题记录13——705. Design HashSet(easy)

    LeetCode刷题记录13--705. Design HashSet(easy) 目录 LeetCode刷题记录13--705. Design HashSet(easy) 前言 题目 语言 思路 源 ...

  7. LeetCode刷题记录12——232. Implement Queue using Stacks(easy)

    LeetCode刷题记录12--232. Implement Queue using Stacks(easy) 目录 LeetCode刷题记录12--232. Implement Queue usin ...

  8. LeetCode刷题记录11——290. Word Pattern(easy)

    LeetCode刷题记录11--290. Word Pattern(easy) 目录 LeetCode刷题记录11--290. Word Pattern(easy) 题目 语言 思路 源码 后记 题目 ...

  9. LeetCode刷题记录10——434. Number of Segments in a String(easy)

    LeetCode刷题记录10--434. Number of Segments in a String(easy) 目录 LeetCode刷题记录9--434. Number of Segments ...

  10. LeetCode刷题记录9——58. Length of Last Word(easy)

    LeetCode刷题记录9--58. Length of Last Word(easy) 目录 LeetCode刷题记录9--58. Length of Last Word(easy) 题目 语言 思 ...

最新文章

  1. HTML基础第七讲---框架
  2. 移动端图片上传旋转、压缩的解决方案
  3. poj 3204 Ikki's Story I - Road Reconstruction
  4. 正则表达式的一点奇怪
  5. webstorm如何自动换行_怎样在word中自动生成目录
  6. android 蓝牙通讯实现手机蓝牙的开启,并扫描附近可见的蓝牙设备
  7. php curl 采集文件,curl获取远程文件内容
  8. 电视盒子ADB常用命令
  9. 基于python mediapipe的视频或者图片更换背景
  10. 分享一个超nice的数据分析实战案例, “手把手”教学,收藏等于学会
  11. Day14 常用API
  12. 伏地魔爱上林黛玉?就没有B站不能组的CP!
  13. 关于前端开发中的模块化理解
  14. FCM算法原理及matlab实现
  15. 16丨数据分析基础篇答疑
  16. fudge函数C语言,C语言程序设计-中国大学mooc-题库零氪
  17. 学习笔记(1):PR快速入门-认识界面
  18. 记一次关于App页面响应时间的测试
  19. MySQL查询之索引
  20. Revit二次开发_获取视图样式替换

热门文章

  1. J-LINK 操作使用指南
  2. Linux的应用领域
  3. 【今日CS 视觉论文速览】 9 Jan 2019
  4. SpringBoot—CORS跨域问题详解和解决方案
  5. 动态数组与迭代器 0119
  6. python实现文字转语音的合成
  7. django-模型类操作-初期阶段-小结
  8. django-数据的插入-利用pymysql
  9. mysql安装过程-zip安装
  10. wordpress在前台文章界面添加编辑按钮