前文传送门:

  1. C#刷遍Leetcode面试题系列连载(1) - 入门与工具简介
  2. C#刷遍Leetcode面试题系列连载(2): No.38 - 报数

系列教程索引

传送门:https://enjoy233.cnblogs.com/articles/leetcode_csharp_index.html

  1. C#刷遍Leetcode面试题系列连载(1) - 入门与工具简介
  2. C#刷遍Leetcode面试题系列连载(2): No.38 - 报数
  3. C# 刷遍 Leetcode 面试题系列连载(3): No.728 - 自除数

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

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

LeetCode - 728. 自除数

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

题目描述

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

例如,128 是一个自除数,因为 128 % 1 == 0,128 % 2 == 0,128 % 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函数的要点是:

​ 1.排除含有0的数,因为0不能整除任何整数

​ 2.排除原数不是末位数字倍数的数

  • 遍历原数列,对每一个数调用一次进行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;
}
}

运行结果:

执行用时: 244 ms, 在所有 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

作者简介: 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面试题系列连载(1) - 入门与工具简介

    目录 为什么要刷LeetCode 刷LeetCode有哪些好处? LeetCode vs 传统的 OJ LeetCode刷题时的心态建设 C#如何刷遍LeetCode 选项1: VS本地Debug + ...

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

    目录 前言 题目描述 相关话题 相似题目 解题思路: 运行结果: 代码要点: 参考资料: 文末彩蛋 前言 前文传送门: C# 刷遍 Leetcode 面试题系列连载(1) - 入门与工具简介 上篇文章 ...

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

    上篇文章中一道数学问题 - 自除数,今天我们接着分析 LeetCode 中的另一道数学题吧~ 今天要给大家分析的面试题是 LeetCode 上第 633 号问题, Leetcode 633 - 平方数 ...

  4. C#刷遍Leetcode面试题系列连载(5):No.593 - 有效的正方形

    上一篇 LeetCode 面试题中,我们分析了一道难度为 Easy 的数学题 - 自除数,提供了两种方法.今天我们来分析一道难度为 Medium 的面试题. 今天要给大家分析的面试题是 LeetCod ...

  5. C#刷遍Leetcode系列连载 索引

    C#刷遍Leetcode系列文章 索引 索引(陆续发布中,请保持关注) C#刷遍Leetcode面试题系列连载(1) - 入门与工具简介 C#刷遍Leetcode面试题系列连载(2): No.38 - ...

  6. .NET面试题系列[0] - 写在前面

    .NET面试题系列目录 .NET面试题系列[1] - .NET框架基础知识(1) .NET面试题系列[2] - .NET框架基础知识(2) .NET面试题系列[3] - C# 基础知识(1) .NET ...

  7. 【转载】.NET面试题系列[0] - 写在前面

    原文:.NET面试题系列[0] - 写在前面 索引: .NET框架基础知识[1] - .NET框架基础知识(1) http://www.cnblogs.com/haoyifei/p/5643689.h ...

  8. .NET面试题系列

    索引: .NET框架基础知识[1] - http://www.cnblogs.com/haoyifei/p/5643689.html .NET框架基础知识[2] - http://www.cnblog ...

  9. Java容器--2021面试题系列教程(附答案解析)--大白话解读--JavaPub版本

    Java容器--2021面试题系列教程(附答案解析)--大白话解读--JavaPub版本 前言 序言 再高大上的框架,也需要扎实的基础才能玩转,高频面试问题更是基础中的高频实战要点. 适合阅读人群 J ...

随机推荐

  1. python3之猜数字游戏

    猜数字小游戏 # coding:utf-8 import random #利用random生成一个1-10的随机数 luckeyNum = random.randint(1,10) #限定猜的次数 l ...

  2. Spinner在Dialog中的使用效果

    版权声明:本文为xing_star原创文章,转载请注明出处! 本文同步自http://javaexception.com/archives/91 背景: 记得很久以前,碰到一个需求场景,需要在Andr ...

  3. SqlServer中用@@IDENTITY取最新ID不准的问题

    最近遇到了一个SqlServer中用@@IDENTITY取最新ID不准的问题,经过在网上的一番查找,找到了如下资料,略作记录:"一个网友问我一个关于@@IDENTITY的问题.他的数据库中有 ...

  4. MongoDB 读偏好设置中增加最大有效延迟时间的参数

    在某些情况下,将读请求发送给副本集的备份节点是合理的,例如,单个服务器无法处理应用的读压力,就可以把查询请求路由到可复制集中的多台服务器上.现在绝大部分MongoDB驱动支持读偏好设置(read pr ...

  5. C# Session 操作类

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  6. OSI网络模型和网络连接设备

    OSI网络模型和网络连接设备 OSI模型 7层之间传输的协议传输单元(PDU)的专业叫法. 第7-5层(应用层)传输的pdu叫:data 第4层(传输层)传输的pdu叫:segment(数据段) 第3 ...

  7. wsl笔记

    目录 环境 修改更新源 新建用户 设置超级用户 环境变量 zsh美化终端 设zsh为默认shell 环境变量PATH 开启 ssh 远程连接 apt命令与问题 windows 和 wsl 互相访问文件 ...

  8. Ubuntu12.04配置永久静态ip地址

    1 切换到 root 用户 先临时切换到root用户(因为我不想每打一个命令都要在前面加上sudo) $ sudo -i 然后,输入密码临时切换到root用户.如下图: 2 配置IP 打开 /etc/ ...

  9. 【西北师大-2108Java】第四次作业成绩汇总

    [西北师大-2108Java]第四次作业成绩汇总 深入理解程序设计中算法与程序的关系: 深入理解java程序设计中类与对象的关系: 理解OO程序设计的第2个特征:继承.多态: 学会采用继承定义类设计程 ...

  10. CSS中的选择器(一)

    API文档:http://css.cuishifeng.cn/all.html 1. 通配选择符(*) 语法: * { sRules } 说明: 通常不建议使用通配选择符,因为它会遍历并命中文档中所有 ...