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

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

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

640?

前言

前文传送门:

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

640?wx_fmt=png

今天要给大家分析的面试题是 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技术交流群,在公众号后台回复“加群”或者“学习”即可。

640?wx_fmt=gif

640?wx_fmt=gif
文末彩蛋
微信后台回复“asp”,给你:一份全网最强的ASP.NET学习路线图。

回复“cs”,给你:一整套 C# 和 WPF 学习资源!

回复“core”,给你:2019年dotConf大会上发布的.NET core 3.0学习视频!

640?wx_fmt=gif

朕已阅 640?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/313383.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【.NET Core 3.0】框架之十二 || 跨域 与 Proxy

本文有配套视频&#xff1a;https://www.bilibili.com/video/av58096866/?p8一、为什么会出现跨域的问题跨域问题由来已久&#xff0c;主要是来源于浏览器的”同源策略”。何为同源&#xff1f;只有当协议、端口、和域名都相同的页面&#xff0c;则两个页面具有相同的源。只要…

.NET 时间轴:从出生到巨人

点击上方蓝字关注“汪宇杰博客”“ 自1995年互联网战略日以来最雄心勃勃的事业—— 微软.NET战略, 2000年6月30日”2002-02-13.NET Framework 1.0CLR 1.0Visual Studio .NET关键词&#xff1a;跨语言、托管代码2003-04-24.NET Framework 1.1CLR 1.1Visual Studio 2003关键词&am…

Boltzmann Machine 入门(2)

发现RBM 中的能量函数概念需要从Hopfield网络的角度理解&#xff0c;于是找到 http://blog.csdn.net/roger__wong/article/details/43374343 和关于BM的最经典论文 http://www.cs.toronto.edu/~hinton/papers.html#1983-1976 一、限制玻尔兹曼机的感性认识 要回答这个问题大…

针对深度学习的GPU芯片选择

转自&#xff1a;http://timdettmers.com/2014/08/14/which-gpu-for-deep-learning/ It is again and again amazing to see how much speedup you get when you use GPUs for deep learning: Compared to CPUs 10x speedups are typical, but on larger problems one can achi…

C# 8 - Range 和 Index(范围和索引)

C# 7 的 Span C# 7 里面出现了Span这个数据类型&#xff0c;它可以表示另一个数据结构里连续相邻的一串数据&#xff0c;并且它是内存安全的。 例子&#xff1a; 这个图的输出是3&#xff0c;4&#xff0c;5&#xff0c;6。 C# 8 的Range类型 而C# 8里面我们可以从一个序列里面…

DCT变换学习

http://blog.csdn.net/timebomb/article/details/5960624 timebomb的博客 DCT变换的基本思路是将图像分解为88的子块或1616的子块&#xff0c;并对每一个子块进行单独的DCT变换&#xff0c;然后对变换结果进行量化、编码。随着子块尺寸的增加&#xff0c;算法的复杂度急剧上升…

敏捷回顾会议的套路与实践分享

01—关于敏捷回顾会议实践过敏捷的人都知道&#xff0c;在敏捷中会有很多的会议要开&#xff0c;比如计划会议&#xff08;Planning&#xff09;、站立会议&#xff08;Daily Scrum&#xff09;、评审会议&#xff08;Review&#xff09;以及回顾会议&#xff08;Retrospective…

.Net Core AA.FrameWork应用框架介绍

开发多年&#xff0c;一直在从社区获取开源的便利&#xff0c;也深感社区力量的重要性&#xff0c;今天开源一个应用基础框架AA.FrameWork,也算是回馈社区&#xff0c;做出一点点贡献&#xff0c;希望能够帮助类似当年入行的我。AA.FrameWork 是基于.NET core流行的开源类库创建…

RBM/DBN训练中的explaining away概念

可以参照 Stanford大神DaphneKoller的概率图模型&#xff0c;里面贝叶斯网络一节讲到了explaining away。我看过之后试着谈谈自己的理解。 explainingaway指的是这样一种情况&#xff1a;对于一个多因一果的问题&#xff0c;假设各种“因”之间都是相互独立的&#xff0c;如果…

.NET Core使用gRPC打造服务间通信基础设施

一、什么是RPCrpc&#xff08;远程过程调用&#xff09;是一个古老而新颖的名词&#xff0c;他几乎与http协议同时或更早诞生&#xff0c;也是互联网数据传输过程中非常重要的传输机制。利用这种传输机制&#xff0c;不同进程&#xff08;或服务&#xff09;间像调用本地进程中…

DBN训练学习-A fast Learning algorithm for deep belief nets

转载自&#xff1a;http://blog.sciencenet.cn/blog-110554-889016.html DBN的学习一般都是从Hinton的论文A Fast Learning Algorithm for Deep Belief Nets开始。如果没有相关的背景知识&#xff0c;不知道问题的来由&#xff0c;这篇论文读起来是相当费劲的。 学习过程中主…

程序员家的大闸蟹:青壳、白底、肉多、爆黄,现在是吃大闸蟹的最佳时期

其实&#xff0c;我跟大家一样&#xff0c;也是dotNET跨平台和张队长的忠实粉丝&#xff0c;也是一名程序员。上上周&#xff0c;我在dotNET跨平台的优选商城买了队长推荐人生果&#xff0c;也是第一次吃这个人生果&#xff0c;味道鲜甜、汁水也特别多&#xff0c;但由于快递的…

环形链表II

1、题目描述 给定一个链表&#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 为了表示给定链表中的环&#xff0c;我们使用整数 pos 来表示链表尾连接到链表中的位置&#xff08;索引从 0 开始&#xff09;。 如果 pos 是 -1&#xff0c;则…

.NET Core Love gRPC

这篇内容主要来自Microsoft .NET团队程序经理Sourabh Shirhatti的博客文章&#xff1a;https://grpc.io/blog/grpc-on-dotnetcore/&#xff0c; .NET Core 3.0现已提供grpc的.NET 托管实现 grpc-dotnet&#xff0c; gRpc 取代WCF成为 .NET的一等公民。自2018年11月以来&#xf…

Magicodes.IE已支持通过模板导出票据

本次更新如下&#xff1a;【重构】重构HTML、PDF导出等逻辑&#xff0c;并修改IExporterByTemplate为&#xff1a;Task ExportListByTemplate(IList dataItems, string htmlTemplate null) where T : class;Task ExportByTemplate(T data, string htmlTemplate null) where T…

complementary prior

Complementary Prior 解决了多层网络中层间参数W无法计算的问题。 多层有向网络如下图&#xff0c;如果计算 W&#xff0c;我们需要知道第一个隐层的后验概率&#xff0c;那么会遇到几个问题&#xff1a;多层sigmoid网络1&#xff09;后验概率几乎不可计算&#xff0c;因为所谓…

Memcached

本文来自 58沈剑&#xff1a;https://mp.weixin.qq.com/s/zh9fq_e2BgdIeR8RKtY6Sg memcache是互联网分层架构中&#xff0c;使用最多的的KV缓存。面试的过程中&#xff0c;memcache相关的问题几乎是必问的&#xff0c;关于memcache的面试提问&#xff0c;你能回答到哪一个层次…

使用FastReport报表工具生成报表PDF文档

在我们开发某个系统的时候&#xff0c;客户总会提出一些特定的报表需求&#xff0c;固定的报表格式符合他们的业务处理需要&#xff0c;也贴合他们的工作场景&#xff0c;因此我们尽可能做出符合他们实际需要的报表&#xff0c;这样我们的系统会得到更好的认同感。本篇随笔介绍…

DXSDK_June10安装错误

今天安装DXSDK_Jun10时&#xff08;下载地址&#xff1a;http://download.microsoft.com/download/A/E/7/AE743F1F-632B-4809-87A9-AA1BB3458E31/DXSDK_Jun10.exe&#xff09;&#xff0c;出现错误Error Code:s1023 错误原因&#xff1a; 计算机上有安装过更新版的Microsoft Vi…

相交链表

1、题目描述 编写一个程序&#xff0c;找到两个单链表相交的起始节点。 如下面的两个链表&#xff1a; 在节点 c1 开始相交。 示例 1&#xff1a; 输入&#xff1a;intersectVal 8, listA [4,1,8,4,5], listB [5,0,1,8,4,5], skipA 2, skipB 3 输出&#xff1a;Refe…