Talk is cheap.
func getUglyNumber(n int) int {
ugly := []int{1}
var i2, i3, i5 int
for len(ugly) < n {
for ugly[i2] * 2 <= ugly[len(ugly)-1] { i2++ }
for ugly[i3] * 3 <= ugly[len(ugly)-1] { i3++ }
for ugly[i5] * 5 <= ugly[len(ugly)-1] { i5++ }
tmp := ugly[i2] * 2
if tmp > ugly[i3] * 3 { tmp = ugly[i3] * 3 }
if tmp > ugly[i5] * 5 { tmp = ugly[i5] * 5 }
ugly = append(ugly, tmp)
}
return ugly[n-1]
}