劍指Offer之醜數問題

2021-09-29 14:52:43 字數 504 閱讀 3442

1.判斷乙個數是否是醜數

將這個數分別除以2,3,5,取出所有情況

public boolean isugly(int num) 

while(num!=1)

if(num%3==0)

if(num%5==0)

return false;

}return true;

}

2.找出第n個醜數

乙個醜數是由前面乘積而來的,可以設定三個變數,i1,i2,i3,分別記錄乘2,乘3,乘5,每次從三者位置數中取最小值,如果是其中乙個位置的數,對應的指標變數加1.

public int nthuglynumber(int n) 

if(arr[index]==arr[i2]*3)

if(arr[index]==arr[i3]*5)

index++;

}return arr[index-1];

}

劍指offer之醜數

把只包含因子2 3和5的數稱作醜數 ugly number 例如6 8都是醜數,但14不是,因為它包含因子7。習慣上我們把1當做是第乙個醜數。求按從小到大的順序的第n個醜數。對於這個問題,最容易想的就是乙個個數進行判斷,如 public static intgetuglynumber int ind...

劍指offer 醜數

把只包含因子2 3和5的數稱作醜數 ugly number 例如6 8都是醜數,但14不是,因為它包含因子7。習慣上我們把1當做是第乙個醜數。求按從小到大的順序的第n個醜數。分析 參考程式設計師面試金典 偽 如下 1 初始化array和佇列 q2 q3 q5 2 將1插入array 3 分別將1 2...

劍指Offer 醜數

我們把只包含因子 2 3 和 5 的數稱作醜數 ugly number 求按從小 到大的順序的第 1500 個醜數。例如 6 8都是醜數,但 14 不是,它包含因子 7。習慣上我們把 1當做第乙個醜數。解法一 逐一判斷是否是醜數,簡單但是不夠高效 數字n是數字m的因子說明m n 0。醜數的因子只有2...