264. Ugly Number II

注意大数溢出的问题

import java.util.ArrayList;
import java.util.List;

public class Solution {
    public int nthUglyNumber(int n) {
        List<Long> res=new ArrayList<Long>();
        res.add(1L);
        for(int i=1;i<n;i++)
        {
            long min=0;
            
            long num2=0;
            for(int j=i-1;j>=0;j--)
            {
                if(res.get(j)*2<=res.get(i-1))
                    break;
                num2=res.get(j)*2;
            }
            
            long num3=0;
            for(int j=i-1;j>=0;j--)
            {
                if(res.get(j)*3<=res.get(i-1))
                    break;
                num3=res.get(j)*3;
            }
            min=num2<num3?num2:num3;
            
            long num5=0;
            for(int j=i-1;j>=0;j--)
            {
                if(res.get(j)*5<=res.get(i-1))
                    break;
                num5=res.get(j)*5;
            }
            min=min<num5?min:num5;
            
            res.add(min);
            
        }
        
        return (res.get(n-1)).intValue();
    }
    
//    public static void main(String []args)
//    {
//        Solution.nthUglyNumber(3);
//        
//    }
    
}

 

posted @ 2016-07-12 16:46  阿怪123  阅读(150)  评论(0编辑  收藏  举报