假设a[n - 1]表示第n个这样的数,则a[0] = 1,显然,更大的丑数只能由小的丑数通过乘以2,3,5得到。维护三个头指针,一个尾指针,头指针h1,h2,h3分别指向a[h1],a[h2],a[h3]分别乘以2,3,5能够比目前得到的最大丑数稍大的最小丑数,尾指针则指向目前最大的丑数。显然,如果乘积小于最大的丑数,那就将头指针后移,否则选择三个值中最小的那个加入队尾,直到尾指针到达目标。