问题

该文章的最新版本已迁移至个人博客【比特飞】,单击链接 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. linux 终端界面显示 中文乱码或方块
  2. 【正一专栏】俄罗斯世界杯来了——抽签概述
  3. java swt 双屏_Java中AWT、Swing与SWT三大GUI技术的原理与效率差异
  4. js+Css实现的一个简单对话框
  5. mysql5.6 mysqld safe_mysql程序之mysqld_safe详解
  6. 左右xcode的重构选项的一些理解
  7. 钉钉怎么设置考勤打卡规则
  8. [Linux]局域网设置-远程登录GDMSETUP
  9. POJ 1398 Complete the sequence! ★ (差分)
  10. 基于springboot的学生选课系统
  11. pandas导入导出数据
  12. VMware-workstation 密钥
  13. STM8S自学笔记-005 精准延时
  14. html设置了背景图片不显示,CSS设置背景图片不显示的解决方法
  15. 985高校计算机专业炉气分数,【原创】外地985高校专业录取分数解析(一)
  16. 有限域(3)——多项式环的商环构造有限域
  17. 达人评测 iPad Pro 2021怎么样
  18. 数据传输加密非对称加密算法以及对称算法-RSA+AES
  19. Python爬虫随笔:爬取iciba上的单词发音文件
  20. CUDA unknown error - this may be due to an incorrectly set up environment 问题解决

热门文章

  1. sklearn常用函数(更新中)
  2. C++——多进程并发与多线程并发
  3. LeetCode 383. Ransom Note
  4. Linux的应用领域
  5. HDOJ3791 二叉搜索树
  6. 学习日报 1027 自动类型转换 运算符
  7. 全新Docker Hub发布:提供查找、存储和共享容器镜像单一体验
  8. 使用System.Timers.Timer类实现程序定时执行
  9. C#设计模式:迭代器模式(Iterator Pattern)
  10. NHMicro业务脚本热部署快速开发框架介绍