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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

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

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

點擊藍字“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 - 自除数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。