丑数的重写(丑陋的数哈哈)
package day1003_丑数;
import java.util.LinkedList;
import java.util.Scanner;
import javax.sound.sampled.LineListener;
public class Test {
public static void main(String[] args) {
System.out.println(“输出第几个丑数”);
long n=new Scanner(System.in).nextInt();
long r=f(n);
System.out.println®;
}
private static long f(long n) {
//如果n=1,则返回1
if(n==1){
return 1;
}
//创建三个集合用来储存2,3,5的倍数
LinkedList<Long> list2=new LinkedList<>();
LinkedList<Long> list3=new LinkedList<>();
LinkedList<Long> list5=new LinkedList<>();
//集合赋值
list2.add(2L);
list3.add(3L);
list5.add(5L);
//创建r变量,用来储存集合中最小的数
long r=0;
for (int i = 2; i <= n; i++) {
//截取集合中最小的数
long a=list2.getFirst();
long b=list3.getFirst();
long c=list5.getFirst();
//选取三个集合中最小的数
r=Math.min(a, Math.min(b, c));
判断是那个数
if(r==a)list2.removeFirst();
if(r==b)list3.removeFirst();
if(r==c)list5.removeFirst();
//继续网上乘
list2.add(r*2);
list3.add(r*3);
list5.add(r*5);
}
返回丑数
return r;
}
}