题解 | #丑数#

丑数

https://www.nowcoder.com/practice/6aa9e04fc3794f68acf8778237ba065b

import java.util.*;
public class Solution {
    
    public int GetUglyNumber_Solution1(int index) {
        List<Integer> list1=new ArrayList<Integer>();//存储素数
        List<Integer> list2=new ArrayList<Integer>();//存储丑数
        int i=1;
        while(true){
            getSubNum(i,list1,list2);
            if(list2.size()==index){
                return list2.get(index-1);
            }
            i++;
        }

    }
    public void getSubNum(int num,List<Integer> list1,List<Integer> list2){
        if(num==1){
            list1.add(num);
            list2.add(num);
            return;
        }
        int div_num=num/2;
        Set<Integer> set=new HashSet<Integer>();
        for(int i=1;i<=num;i++){
            int tmp1=num/i;
            int tmp2=num%i;
            if(tmp2==0){
                set.add(tmp1);
                set.add(num/i);
            }
        }
        if(set.size()==2){
            list1.add(num);
        }
        for(int n:list1){
            if(set.contains(n)&&n!=1&&n!=2&&n!=3&&n!=5){
                return;
            }
        }
        list2.add(num);
        
    }
    public int GetUglyNumber_Solution(int index) {
        if(index<=0)return 0;
        int num2=0;
        int num3=0;
        int num5=0;
        List<Integer> list=new ArrayList<Integer>();
        list.add(0,1);
        //头插法,第一个元素即为方法目标对象
        for(int i=1;i<index;i++){
            int min_num=Math.min(2*list.get(num2),Math.min(3*list.get(num3),5*list.get(num5)));
            list.add(min_num);
            if(min_num==2*list.get(num2))num2++;
            if(min_num==3*list.get(num3))num3++;
            if(min_num==5*list.get(num5))num5++;
            
        }
        return list.get(index-1);
    }
}

全部评论

相关推荐

沉淀一会:**圣经 1.同学你面试评价不错,概率很大,请耐心等待;2.你的排名比较靠前,不要担心,耐心等待;3.问题不大,正在审批,不要着急签其他公司,等等我们!4.预计9月中下旬,安心过节;5.下周会有结果,请耐心等待下;6.可能国庆节前后,一有结果我马上通知你;7.预计10月中旬,再坚持一下;8.正在走流程,就这两天了;9.同学,结果我也不知道,你如果查到了也告诉我一声;10.同学你出线不明朗,建议签其他公司保底!11.同学你找了哪些公司,我也在找工作。
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务