剑指offer-test33

    xiaoxiao2025-01-06  35

    33.丑数 题目描述:把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。

    由题意表示:所有的丑数分为三种类型 2x,3y,5z 其中 xzy是数组中的元素

    import java.util.ArrayList; public class Solution { public int GetUglyNumber_Solution(int n) { if(n<=0) return 0; ArrayList<Integer> res=new ArrayList<>(); res.add(1);//1是第一个丑数 //三个下标用于记录丑数的位置 int i2=0,i3=0,i5=0; while(res.size()<n){ //丑数分为三种类型 2*x,3*y,5*z int n2=res.get(i2)*2; int n3=res.get(i3)*3; int n5=res.get(i5)*5; //三个数都是可能的丑数,取最小的放进丑数数组里面 int min=Math.min(n2,Math.min(n3,n5)); res.add(min); if(min==n2) i2++; if(min==n3) i3++; if(min==n5) i5++; } return res.get(res.size()-1);//返回集合的最后压栈的数也就是第n个丑数 } }
    最新回复(0)