lintcode算法题,这道题和前面的一样出现的问题一样,就是在输入的数字过大的时候,代码出现异常,运行效率很低下。
public class Lincode05Number {
public static void main(String[] args){
List list = Lincode05Number.getStr(15);
for(int i=0;i<list.size();i++){
if(i==list.size()-1){
System.out.print(list.get(i));
}else{
System.out.print(list.get(i)+",");
}
}
}
public static List getStr(int n){
List list=new ArrayList();
for(int i=1;i<=n;i++){
if(i%3==0){
list.add("fizz");
}else if(i%5==0){
list.add("buzz");
}else if(i%3==0&&i%5==0){
list.add("fizz buzz");
}else{
list.add(i);
}
}
return list;
}
}
但是对于简单的100000的数是可以计算出来,且运行速度也是可以的,对于1000000运行速度较慢,运算结果正确,大于1000000以上的数字,本代码就出现异常了。
如果各位有较好计算方式,在评论区留言。