題目描述:把只包含因子2、3和5的數稱作醜數(ugly number)。例如6、8都是醜數,但14不是,因為它包含因子7。 習慣上我們把1當做是第乙個醜數。求按從小到大的順序的第n個醜數。
思路1:乙個數m是另乙個數n的因子,則n能被m整除,即n % m = 0,根據醜數的定義,醜數只能被2、3、5整除,所以我們可以通過把乙個數一直被三個因子除,這樣最後如果該數變成1的話(因為第乙個醜數是1),就意味著這個數是醜數,但這樣的**時間複雜度太大。
public int getuglynumber_solution(int index)
int number = 0;
int uglyfound = 0;
while(uglyfound < index)
}return
number;
}boolean isugly(int number)
while(number % 3 == 0)
while(number % 5 == 0)
if(number == 1)else
}} 思路2:
劍指offer32 醜數
把只包含質因子2 3和5的數稱作醜數 ugly number 例如6 8都是醜數,但14不是,因為它包含質因子7。習慣上我們把1當做是第乙個醜數。求按從小到大的順序的第n個醜數。題意理解 1.直接法。逐個判斷每個整數是不是醜數的解法,直觀但不夠高效 所謂乙個數m是另乙個數n的因子,是指n能被m整除,...
劍指offer之醜數
把只包含因子2 3和5的數稱作醜數 ugly number 例如6 8都是醜數,但14不是,因為它包含因子7。習慣上我們把1當做是第乙個醜數。求按從小到大的順序的第n個醜數。對於這個問題,最容易想的就是乙個個數進行判斷,如 public static intgetuglynumber int ind...
劍指offer系列 33 醜數
把只包含質因子2 3和5的數稱作醜數 ugly number 例如6 8都是醜數,但14不是,因為它包含質因子7。習慣上我們把1當做是第乙個醜數。求按從小到大的順序的第n個醜數。遍歷得出醜數 醜數結構2 x 3 y 5 z 用三個指標p2,p3,p5記錄上次計算醜數的位置 p2 上乙個,乘以2得到的...