丑数
发布时间:2020-12-13 21:12:49 所属栏目:PHP教程 来源:网络整理
导读:题目 把只包括因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,由于它包括因子7。 习惯上我们把1当作是第1个丑数。求按从小到大的顺序的第N个丑数。 解题 暴力的不说了 1个数只能是2、3、5因子组成是丑数 丑数M,1定是由于前面的数乘
题目把只包括因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,由于它包括因子7。 习惯上我们把1当作是第1个丑数。求按从小到大的顺序的第N个丑数。 解题暴力的不说了 import java.util.*;
public class Solution {
public int GetUglyNumber_Solution(int index) {
ArrayList<Integer> u = new ArrayList<Integer>();
u.add(0);
u.add(1);
if(index == 1)
return u.get(index);
int preIndex = 2;
while(preIndex <= index){
int preU = Integer.MAX_VALUE;
for(int i=1;i<u.size() ;i++){
int ui = u.get(i);
if(!u.contains(ui*2))
preU = Math.min(preU,ui*2);
if(!u.contains(ui*3))
preU = Math.min(preU,ui*3);
if(!u.contains(ui*5))
preU = Math.min(preU,ui*5);
}
u.add(preU);
preIndex ++;
}
return u.get(index);
}
} 判断是不是已存在、找到最小值时间复杂度都是比较高的 import java.util.*;
public class Solution {
public int GetUglyNumber_Solution(int index) {
ArrayList<Integer> u = new ArrayList<Integer>();
u.add(0);
u.add(1);
if(index == 1)
return u.get(index);
int i1 = 1;
int i2 = 1;
int i3 = 1;
int preIndex = 2;
while(preIndex <= index){
int preU = Integer.MAX_VALUE;
int u1 = u.get(i1) * 2;
int u2 = u.get(i2) * 3;
int u3 = u.get(i3) * 5;
preU = Math.min(preU,u1);
preU = Math.min(preU,u2);
preU = Math.min(preU,u3);
if(preU == u1){
i1++;
}
if(preU == u2){
i2++;
}
if(preU == u3){
i3++;
}
u.add(preU);
preIndex ++;
}
return u.get(index);
}
} (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |