My expressive Python solution
\n    def nthUglyNumber(self, n):\n        ugly = [1]\n        i2, i3, i5 = 0, 0, 0\n        while n > 1:\n            u2, u3, u5 = 2 * ugly[i2], 3 * ugly[i3], 
\n    def nthUglyNumber(self, n):\n        ugly = [1]\n        i2, i3, i5 = 0, 0, 0\n        while n > 1:\n            u2, u3, u5 = 2 * ugly[i2], 3 * ugly[i3], 5 * ugly[i5]\n            umin = min((u2, u3, u5))\n            if umin == u2:\n                i2 += 1\n            if umin == u3:\n                i3 += 1\n            if umin == u5:\n                i5 += 1\n            ugly.append(umin)\n            n -= 1\n        return ugly[-1]
['Python']