該題目**於牛客網《劍指offer》專題。
把只包含質因子2、3和5的數稱作醜數(ugly number)。例如6、8都是醜數,但14不是,因為它包含質因子7。習慣上我們把1當做是第乙個醜數。
求按從小到大的順序的第n個醜數。
go語言實現:
func
getuglynumber
(index int
)int
i2 :=
0 i3 :=
0 i5 :=
0//從1開始,1*2,1*3,1*5
num :=
1//按順序存醜數
var arr [
]int
arr =
(arr, num)
forlen
(arr)
< index
if arr[i3]*3
== num
if arr[i5]*5
== num
arr =
(arr, num)
}return num
}
輸入數字是否為醜數:
func
isugly
(num int
)bool
if num ==
1for num !=
1else
if num %3==
0else
if num %5==
0else
}return
true
}
劍指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...
劍指offer 醜數
把只包含因子2 3和5的數稱作醜數 ugly number 例如6 8都是醜數,但14不是,因為它包含因子7。習慣上我們把1當做是第乙個醜數。求按從小到大的順序的第n個醜數。分析 為了保證時間達到要求,可以將所求得的醜數都儲存在陣列中,然後再取出。前面的醜數乘以2 3或5中的最小的乙個是下乙個醜數。...