丑数

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

import java.util.ArrayList;

public class Solution {
    
    public int GetUglyNumber_Solution(int input) {
        
        if(input == 0)
            return 0;
        ArrayList array = new ArrayList();
        int n2 = 1;
        int m2 = 0;
        int n3 = 1;
        int m3 = 0;
        int n5 = 1;
        int m5 = 0;
        array.add(1);
        int n = 1;
        while(n < input){
            
            int min = Math.min(n2*2, Math.min(n3*3, n5*5));
            array.add(min);
            if(n2*2 <= min) {
                
                m2 ++;
                n2 = array.get(m2);
            }
            if(n3*3 <= min) {
                
                m3 ++;
                n3 = array.get(m3);
            }
            if(n5*5 <= min) {
                
                m5 ++;
                n5 = array.get(m5);
            }
            n ++;
        }
        return array.get(input - 1);
    }
}

你可能感兴趣的:(丑数)