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,一经查实,立即删除!

相关文章

GPU Shader 程序调试方法

转载自&#xff1a; http://blog.csdn.net/pizi0475/article/details/7573939 内容提要&#xff1a;手动调试和使用工具PIX调试Direct3D程序。 3D绘图中常见问题&#xff1a; 1&#xff0e;模型消失&#xff0c;没有出现在画面上&#xff1b; 2&#xff0e;模型在画面上失真…

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

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

Boltzmann Machine 入门(1)

根据我的第一篇关于DBM的博文&#xff0c;明白了一个道理&#xff0c;1. v 和h 互相能推测出彼此&#xff0c;表示同一组特征的两种形式&#xff0c;就像时域频域一样。接下来又看了 http://www.cnblogs.com/tianchi/archive/2013/03/14/2959716.html 以热力学分子随机取值变化…

.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…

Go 语言接口

Go 语言接口 Go 语言提供了另外一种数据类型即接口&#xff0c;它把所有的具有共性的方法定义在一起&#xff0c;任何其他类型只要实现了这些方法就是实现了这个接口。 实例 实例 /* 定义接口 */ type interface_name interface { method_name1 [return_type] method_name2…

Redis缓存雪崩、缓存穿透、热点Key

我们通常使用 缓存 过期时间的策略来帮助我们加速接口的访问速度&#xff0c;减少了后端负载&#xff0c;同时保证功能的更新。 1、缓存穿透 缓存系统&#xff0c;按照KEY去查询VALUE,当KEY对应的VALUE一定不存在的时候并对KEY并发请求量很大的时候&#xff0c;就会对后端造…

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里面我们可以从一个序列里面…

第k个排列

1、问题描述 给出集合 [1,2,3,…,n]&#xff0c;其所有元素共有 n! 种排列。 按大小顺序列出所有排列情况&#xff0c;并一一标记&#xff0c;当 n 3 时, 所有排列如下&#xff1a; “123”“132”“213”“231”“312”“321” 给定 n 和 k&#xff0c;返回第 k 个排列。…

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…

光栅化坐标映射公式

Direct3D中投影空间内的点坐标与屏幕上&#xff08;或视口内&#xff09;点的对应关系&#xff0c; 设屏幕大小为wh&#xff0c;屏幕左上角像素的中心被定义为(0,0)&#xff0c;整个屏幕是从(-0.5,-0.5)-(w-0.5,h-0.5)&#xff0c; 像素 将投影空间内的x轴上区间(-1.0-1/w, 1.0…

朋友圈

1、题目描述 班上有 N 名学生。其中有些人是朋友&#xff0c;有些则不是。他们的友谊具有是传递性。如果已知 A 是 B 的朋友&#xff0c;B 是 C 的朋友&#xff0c;那么我们可以认为 A 也是 C 的朋友。所谓的朋友圈&#xff0c;是指所有朋友的集合。 给定一个 N * N 的矩阵 M…

.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;间像调用本地进程中…

排序链表

题目描述 在 O(n log n) 时间复杂度和常数级空间复杂度下&#xff0c;对链表进行排序。 示例 1: 输入: 4->2->1->3 输出: 1->2->3->4示例 2: 输入: -1->5->3->4->0 输出: -1->0->3->4->5解法 思路1&#xff0c;归并排序 publi…

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;但由于快递的…