zoukankan      html  css  js  c++  java
  • 728. Self Dividing Numbers

    原题链接:https://leetcode.com/problems/self-dividing-numbers/description/
    看到这道题目,我想到的最直接最简单的方法:

    import java.util.ArrayList;
    import java.util.HashSet;
    import java.util.List;
    import java.util.Set;
    
    /**
     * Created by clearbug on 2018/2/26.
     */
    public class Solution {
    
        public static void main(String[] args) {
            Solution s = new Solution();
            System.out.println(s.int2Array(35));
            System.out.println(s.selfDividingNumbers(1, 22));
        }
    
        public List<Integer> selfDividingNumbers(int left, int right) {
            List<Integer> res = new ArrayList<>();
            for (int i = left; i <= right; i++) {
                boolean isDividingNumber = true;
                for (Integer temp : int2Array(i)) {
                    if (temp == 0 || i % temp != 0) {
                        isDividingNumber = false;
                        break;
                    }
                }
                if (isDividingNumber) {
                    res.add(i);
                }
            }
            return res;
        }
    
        private Set<Integer> int2Array(int item) {
            Set<Integer> res = new HashSet<>();
            while (item >= 10) {
                res.add(item % 10);
                item = item / 10;
            }
            res.add(item);
            return res;
        }
    }
    

    虽然是通过了,但是时间复杂度和空间复杂度稍微高一点。看一下官方给出的暴力的答案吧,虽然时间复杂度和空间复杂度和我的差不多,但是代码要简洁点:

    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * Created by clearbug on 2018/2/26.
     */
    public class Solution {
    
        public static void main(String[] args) {
            Solution s = new Solution();
            System.out.println(s.selfDividingNumbers(1, 22));
        }
    
        public List<Integer> selfDividingNumbers(int left, int right) {
            List<Integer> res = new ArrayList<>();
            for (int i = left; i <= right; i++) {
                if (check(i)) {
                    res.add(i);
                }
            }
            return res;
        }
    
        private boolean check(int item) {
            for (char c : String.valueOf(item).toCharArray()) {
                if (c == '0' || item % (c - '0') > 0) {
                    return false;
                }
            }
            return true;
        }
    }
    
  • 相关阅读:
    JAVA HttpsURLConnection 忽略对SSL valid 的验证
    IntellJ 13.x JPA Persistence Sample
    IntelliJ IDEA 13.x 下使用Hibernate + Spring MVC + JBoss 7.1.1
    Entity Framework + WCF REST JSON Service
    WCF Membership and Role Provider
    ASP.NET MVC 4 SimpleMembership Provider (1)
    Centos7下安装Nginx
    Centos7下部署docker
    centos 6.5将系统语言改为中文
    ensp配置DHCP实例
  • 原文地址:https://www.cnblogs.com/optor/p/8588495.html
Copyright © 2011-2022 走看看