日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > C# >内容正文

C#

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

發(fā)布時(shí)間:2023/12/4 C# 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#刷遍Leetcode面试题系列连载(3): No.728 - 自除数 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

點(diǎn)擊藍(lán)字“dotNET匠人”關(guān)注我喲

加個(gè)“星標(biāo)”,每日 7:15,好文必達(dá)!

前言

前文傳送門:

上篇文章中我們分析了一個(gè)遞歸描述的字符串問題,今天我們來分析一個(gè)數(shù)學(xué)問題,一道除法相關(guān)的面試題。

今天要給大家分析的面試題是 LeetCode 上第 728 號(hào)問題,

LeetCode - 728. 自除數(shù)

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


題目描述

自除數(shù) 是指可以被它包含的每一位數(shù)除盡的數(shù)。

例如,128 是一個(gè)自除數(shù),因?yàn)?128%1==0128%2==0128%8==0

還有,自除數(shù)不允許包含 0 。

給定上邊界和下邊界數(shù)字,輸出一個(gè)列表,列表的元素是邊界(含邊界)內(nèi)所有的自除數(shù)。

示例 1:

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

注意:

  • 每個(gè)輸入?yún)?shù)的邊界滿足?1<=left<=right<=10000


  • 貢獻(xiàn)者: LeetCode

  • 題目難度: Easy

  • 通過率: 70.20%

相關(guān)話題

  • 數(shù)學(xué)

    https://leetcode.com/tag/math

相似題目

  • 完美數(shù)

    https://leetcode-cn.com/problems/perfect-number/?難度:?簡(jiǎn)單

解題思路:

  • 設(shè)計(jì)一個(gè)判斷單個(gè)數(shù)是否是自除數(shù)的函數(shù),比如取名為 IsSelfDIv()

  • IsSelfDIv函數(shù)的要點(diǎn)是:

    • 排除數(shù)位中含有0的數(shù)

    • 排除原數(shù)不是末位數(shù)字倍數(shù)的數(shù)

  • 遍歷原數(shù)列,對(duì)每一個(gè)數(shù)調(diào)用一次進(jìn)行 IsSelfDIv 函數(shù),將滿足要求的加入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) // 原數(shù)不是末位數(shù)字倍數(shù)的數(shù)需要排除 return false; t /= 10; } return true; } }

運(yùn)行結(jié)果:

執(zhí)行用時(shí): 244ms, 在所有 csharp 提交中擊敗了 100.00%的用戶

相應(yīng)的,如需測(cè)試,本地可執(zhí)行的代碼為:

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) // 原數(shù)不是末位數(shù)字倍數(shù)的數(shù)需要排除 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); } } }

相應(yīng)代碼已經(jīng)上傳到github:

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

End


作者簡(jiǎn)介:Bravo Yeung,計(jì)算機(jī)碩士,知乎干貨答主(獲81K?贊同,?37K?感謝,?234K?收藏)。曾在國(guó)內(nèi) Top3互聯(lián)網(wǎng)視頻直播公司短暫工作過,后加入一家外企做軟件開發(fā)至今。

歡迎各位讀者加入?.NET技術(shù)交流群,在公眾號(hào)后臺(tái)回復(fù)“加群”或者“學(xué)習(xí)”即可。



文末彩蛋微信后臺(tái)回復(fù)“asp”,給你:一份全網(wǎng)最強(qiáng)的ASP.NET學(xué)習(xí)路線圖。
回復(fù)“cs”,給你:一整套 C# 和 WPF 學(xué)習(xí)資源!
回復(fù)“core”,給你:2019年dotConf大會(huì)上發(fā)布的.NET core 3.0學(xué)習(xí)視頻!

朕已閱?

總結(jié)

以上是生活随笔為你收集整理的C#刷遍Leetcode面试题系列连载(3): No.728 - 自除数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。