leetcode 625. Minimum Factorization

来源:互联网 发布:linux rpm包下载网站 编辑:程序博客网 时间:2024/05/16 09:20

leetcode 625. Minimum Factorization

题目中给的是最小的,所以思考时从2开始想起,陷入怎样将多个2组合,比较混乱。

从9开始,把大的因子取出来,很多问题都可以用贪心的办法来解决,关键是要找到贪心的策略


public class Solution {    public int smallestFactorization(int a) {        int k = 9;        if(a==1) return 1;        List<Integer> ans = new ArrayList<Integer>();        while(a>1 && k>1){            // System.out.println(k);            if(a%k==0){                a = a/k;                ans.add(k);            }else{                k--;            }        }        if(a>10 || ans.size()>=10) return 0;        int res = 0;        int len = ans.size();        // System.out.println(len);        for(int i=len-1; i>=0; i--){            res = res*10 + ans.get(i);                    }        return res;    }}