12345678910111213141516171819202122232425262728 |
- func nthUglyNumber(n int) int {
- nums := []int{1}
- next2, next3, next5 := 2, 3, 5
- for i, i2, i3, i5 := 1, 0, 0, 0; i < n; i++ {
- next := next2
- if next3 < next {
- next = next3
- }
- if next5 < next {
- next = next5
- }
- nums = append(nums, next)
- if next == next2 {
- i2++
- next2 = nums[i2] * 2
- }
- if next == next3 {
- i3++
- next3 = nums[i3] * 3
- }
- if next == next5 {
- i5++
- next5 = nums[i5] * 5
- }
- }
- return nums[n-1]
- }
|