33、丑数

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

import java.util.ArrayList;
public class Solution {
    public int GetUglyNumber_Solution(int index) {
        if(index<=0){
            return 0;
        }else if(index==1){
            return 1;
        }
        

        int p2=0;
        int p3=0;
        int p5=0;
        
        ArrayList<Integer> list = new ArrayList<>();
        list.add(1);
        for(int m=2; m<=index; m++){
            int i = 2*list.get(p2);
            int j = 3*list.get(p3);
            int k = 5*list.get(p5);
            if(i==minNum(i,j,k)){
                p2++;
                list.add(i);
            }
            if(j==minNum(i,j,k)){
                p3++;
                //如果之前已经添加过,则不再重复添加
                if(list.size()!=m){
                    list.add(j);
                }
            }
            if(k==minNum(i,j,k)){
                p5++;
                //如果之前已经添加过,则不再重复添加
                if(list.size()!=m){
                    list.add(k);
                }
            }
        }
        return list.get(index-1);
    }
    
    public int minNum(int i, int j, int k){
        int tmp =  minNum(i,j);
        return minNum(tmp,k);
    }
    
    public int minNum(int i, int j){
        if(i<=j){
            return i;
        }else{
            return j;
        }
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 丑数 题目描述 把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因...
    echoVic阅读 4,123评论 0 1
  • 题目描述把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因...
    juexin阅读 1,283评论 0 0
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 14,356评论 0 33
  • 你是一颗绝色的种子 被人遗失在幽深的密林 枝间透露的光,点点的水滴 给你萌出的勇气 你伴着虫鸣酣睡 嗅着芬芳惺忪 ...
    CharlotteCC的印记阅读 1,576评论 0 0
  • 目前关于白血病的病因研究显示,某个体是否发生白血病可能取决于内因、外因等多种因素相互作用的结果。据有关研究,具有以...
    血液病专家姚松夏阅读 5,305评论 0 0

友情链接更多精彩内容