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;
        }
    }
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 丑數 題目描述 把只包含質因子2、3和5的數稱作丑數(Ugly Number)。例如6、8都是丑數,但14不是,因...
    echoVic閱讀 786評論 0 1
  • 題目描述把只包含因子2、3和5的數稱作丑數(Ugly Number)。例如6、8都是丑數,但14不是,因為它包含因...
    juexin閱讀 151評論 0 0
  • 背景 一年多以前我在知乎上答了有關LeetCode的問題, 分享了一些自己做題目的經驗。 張土汪:刷leetcod...
    土汪閱讀 12,776評論 0 33
  • 你是一顆絕色的種子 被人遺失在幽深的密林 枝間透露的光,點點的水滴 給你萌出的勇氣 你伴著蟲鳴酣睡 嗅著芬芳惺忪 ...
    CharlotteCC的印記閱讀 224評論 0 0
  • 目前關于白血病的病因研究顯示,某個體是否發生白血病可能取決于內因、外因等多種因素相互作用的結果。據有關研究,具有以...
    血液病專家姚松夏閱讀 1,475評論 0 0