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;
}
}