前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C#版(击败96.64%的提交) - Leetcode 728. 自除数 - 题解

C#版(击败96.64%的提交) - Leetcode 728. 自除数 - 题解

作者头像
Enjoy233
发布2019-03-05 15:43:12
4370
发布2019-03-05 15:43:12
举报

C#版(击败96.64%的提交) - Leetcode 728. 自除数 - 题解

Leetcode 728 - Self Dividing Numbers 在线提交: https://leetcode-cn.com/problems/self-dividing-numbers/

题目描述

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

例如,128 是一个自除数,因为 128 % 1 == 0128 % 2 == 0128 % 8 == 0

还有,自除数不允许包含 0 。

给定上边界和下边界数字,输出一个列表,列表的元素是边界(含边界)内所有的自除数。

示例 1:

代码语言:javascript
复制
输入: 
上边界left = 1, 下边界right = 22
输出: [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 15, 22]

注意:

  • 每个输入参数的边界满足 1 <= left <= right <= 10000

  • 题目难度:Easy
  • 通过次数:1.5K
  • 提交次数:2.5K
  • 相关话题 数学 相似题目 完美数

思路:

遍历原数列,对每一个进行判断,比如:判断函数取名为IsSelfDIv()

排除含有0的数,排除原数不是末位数字倍数的数。

已AC代码:

代码语言:javascript
复制
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)         // 此while循环的出口条件需要好好体会
        {
            int rem = t % 10;
            if (rem == 0)
                return false;
            if (rem >1 && n % rem != 0)
                return false;
            t /= 10;
        }
        return true;
    }
}

Rank: You are here! Your runtime beats 96.64% of csharp submissions.

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年06月22日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • C#版(击败96.64%的提交) - Leetcode 728. 自除数 - 题解
    • 题目描述
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档