点击蓝字“dotNET匠人”关注我哟

加个“星标”,每日 7:15,好文必达!

前言

前文传送门:

上篇文章中我们分析了一个递归描述的字符串问题,今天我们来分析一个数学问题,一道除法相关的面试题。

今天要给大家分析的面试题是 LeetCode 上第 728 号问题,

LeetCode - 728. 自除数

https://leetcode-cn.com/problems/self-dividing-numbers/

题目描述

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

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

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

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

示例 1:

输入:
上边界left = 1, 下边界right = 22
输出: [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 15, 22]

注意:

  • 每个输入参数的边界满足 1<=left<=right<=10000


  • 贡献者: LeetCode

  • 题目难度: Easy

  • 通过率: 70.20%

相关话题

  • 数学

    https://leetcode.com/tag/math

相似题目

  • 完美数

    https://leetcode-cn.com/problems/perfect-number/ 难度: 简单

解题思路:

  • 设计一个判断单个数是否是自除数的函数,比如取名为 IsSelfDIv()

  • IsSelfDIv函数的要点是:

    • 排除数位中含有0的数

    • 排除原数不是末位数字倍数的数

  • 遍历原数列,对每一个数调用一次进行 IsSelfDIv 函数,将满足要求的加入List中即可

AC的代码为:

public class Solution
{   public IList<int> SelfDividingNumbers(int left, int right)    {   List<int> list = new List<int>();  for (int i = left; i <= right; ++i)  {   if (isSelfDiv(i))   list.Add(i);    }   return list;    }   bool isSelfDiv(int n)   {   if (n < 10)  return true;    if (n % 10 == 0)  return false;   int t = n; while (t != 0)         {   int rem = t % 10;  if (rem == 0) return false;   if (rem > 1 && n % rem != 0)  // 原数不是末位数字倍数的数需要排除   return false;   t /= 10;   }   return true;    }
}

运行结果:

执行用时: 244ms, 在所有 csharp 提交中击败了 100.00%的用户

相应的,如需测试,本地可执行的代码为:

using System;
using System.Collections.Generic;
namespace leetcode728
{   public class Solution   {   public IList<int> SelfDividingNumbers(int left, int right)    {   List<int> list = new List<int>();  for (int i = left; i <= right; ++i)  {   if (isSelfDiv(i))   list.Add(i);    }   return list;    }   bool isSelfDiv(int n)   {   if (n < 10)  return true;    if (n % 10 == 0)  return false;   int t = n; while (t != 0) {   int rem = t % 10;  if (rem == 0) return false;   if (rem > 1 && n % rem != 0)  // 原数不是末位数字倍数的数需要排除   return false;   t /= 10;   }   return true;    }   static void Main(string[] args) {   var sol = new Solution();  var res = sol.SelfDividingNumbers(5, 50);  foreach (var item in res)   Console.WriteLine(item);    }   }
}

相应代码已经上传到github:

https://github.com/yanglr/Leetcode-CSharp/tree/master/leetcode728

End

作者简介:Bravo Yeung计算机硕士,知乎干货答主(获81K 赞同, 37K 感谢, 234K 收藏)。曾在国内 Top3互联网视频直播公司短暂工作过,后加入一家外企做软件开发至今。

欢迎各位读者加入 .NET技术交流群,在公众号后台回复“加群”或者“学习”即可。

文末彩蛋

微信后台回复“asp”,给你:一份全网最强的ASP.NET学习路线图。
回复“cs”,给你:一整套 C# 和 WPF 学习资源!
回复“core”,给你:2019年dotConf大会上发布的.NET core 3.0学习视频!

朕已阅 

C#刷遍Leetcode面试题系列连载(3): No.728 - 自除数相关推荐

  1. C#刷遍Leetcode面试题系列连载(6):No.372 - 超级次方

    点击蓝字"dotNET匠人"关注我哟 加个"星标★",每日 7:15,好文必达! 前文传送门: C# 刷遍 Leetcode 面试题系列连载(1) - 入门与工 ...

  2. c# 两个list比较_C#刷遍Leetcode面试题系列连载(1) 入门与工具简介(VS Code amp; VS)...

    什么要刷LeetCode 大家都知道,很多对算法要求高一点的软件公司,比如美国的FLAGM (Facebook.LinkedIn.Amazon/Apple.Google.Microsoft),或国内大 ...

  3. C#刷遍Leetcode面试题系列连载(1) - 入门与工具简介

    点击蓝字"dotNET匠人"关注我哟 加个"星标★",每日 7:15,好文必达! 什么要刷LeetCode 大家都知道,很多对算法要求高一点的软件公司,比如美国 ...

  4. C#刷遍Leetcode面试题系列连载(2): No.38 - 报数

    前言 前文传送门: 上篇文章中我们主要科普了刷 LeetCode 对大家的作用,今天咱们就正式进行 LeetCode 算法题分析.很多人都知道计算机中有种思想叫 递归,相应地也出现了很多算法.解决递归 ...

  5. C#刷遍Leetcode面试题系列连载(4): No.633 - 平方数之和

    点击蓝字"dotNET匠人"关注我哟 加个"星标★",每日 7:15,好文必达! 前文传送门: 上篇文章中一道数学问题 - 自除数,今天我们接着分析 LeetC ...

  6. leetcode17. 电话号码的字母组合--每天刷一道leetcode算法系列!

    作者:reed,一个热爱技术的斜杠青年,程序员面试联合创始人 前文回顾: leetcode1. 两数之和--每天刷一道leetcode系列! leetcode2. 两数相加--每天刷一道leetcod ...

  7. 去掉数组最后一个元素_leetcode 34. 在排序数组中查找元素的第一个和最后一个位置每天刷一道leetcode算法系列!...

    作者:reed,一个热爱技术的斜杠青年,程序员面试联合创始人 前文回顾: leetcode1. 两数之和--每天刷一道leetcode系列! leetcode2. 两数相加--每天刷一道leetcod ...

  8. 一周刷爆LeetCode,算法da神左神(左程云)耗时100天打造算法与数据结构基础到高级全家桶教程,直击BTAJ等一线大厂必问算法面试题真题详解 笔记

    一周刷爆LeetCode,算法大神左神(左程云)耗时100天打造算法与数据结构基础到高级全家桶教程,直击BTAJ等一线大厂必问算法面试题真题详解 笔记 教程与代码地址 P1 出圈了!讲课之外我们来聊聊 ...

  9. dotNET面试题汇总系列连载(1):基础语法

    点击上方"dotNET全栈开发","设为星标" 加"星标★",每天11.50,好文必达 全文约4000字,预计阅读时间8分钟 马上要到202 ...

最新文章

  1. OpenCV识别形状
  2. 使用Zabbix自带MySQL模板监控MySQL
  3. Android实现文件下载并自动安装apk包
  4. SpringCloud 应用在 Kubernetes 上的最佳实践 —— 高可用(容量评估)
  5. linux系统时区设置
  6. java ArrayList排序
  7. OPC服务器如何采集设备的信息,如何将OPC服务器采集的设备数据转为MQTT方式,实现云端发布或订阅...
  8. bash删除文件中的空行
  9. RTSP摄像机为什么还保留MJPEG编码格式
  10. linux内核之设备驱动
  11. 应届生简历如何写实习经历?
  12. CTF杂项(一)——编码学基础
  13. mysql 员工登记表_员工部门信息表-myemployees
  14. UG NX 12同步建模:调整面大小
  15. c语言汉字属于什么类型_C语言为什么需要定义数据类型
  16. hdmi接口有什么用_当贝投影仪HDMI(ARC)接口是什么意思?
  17. python opencv4.0 提取alpha 通道
  18. 即时编译器的中间表达形式(IR)
  19. 从微信办公看信息泄露
  20. 02论文分享与分析——基于ROS的移动机械臂底层规划及运动仿真

热门文章

  1. 2010 本年度认证目标:坐沙发的熊
  2. IIS6文件权限不对触发了Windows身份认证问题解决方法
  3. java高级类_Java高级类特性(一)
  4. jest忽略如何添加忽略_大多数人忽略的基本家庭维护任务
  5. 在命令提示符输出c语言代码_您可以在Windows命令提示符中更改输出缓冲区的大小吗?...
  6. SQL Server2016导出数据表数据
  7. 最难面试IT公司的测试题
  8. 你真的了解Lambda表达式吗?
  9. BeetleX服务网关授权配置
  10. IoTSharp部署教程-Sqlite分表篇