Leetcode 264. Ugly Number II

    xiaoxiao2021-03-25  126

    An approach is to check every number if it is an ugly number, until we meet the nth ugly number.

    An efficient way is to construct and enumerate all n ugly number and return the last one.

    public class Solution { public int nthUglyNumber(int n) { // an array list to save ugly numbers in sequence ArrayList<Integer> uglySeq = new ArrayList<>(); // the first ugly number is 1 uglySeq.add(1); // i, j, and k are three pointers point to ugly number generated by multiplication of 2, 3, and 5 respectively int i = 0, j = 0, k = 0; while (uglySeq.size() < n) { // choose minimum in order to maintain the sequence int nextUgly = Math.min(2*uglySeq.get(i), Math.min(3*uglySeq.get(j), 5*uglySeq.get(k))); uglySeq.add(nextUgly); // update pointers if (2*uglySeq.get(i) == nextUgly) i++; if (3*uglySeq.get(j) == nextUgly) j++; if (5*uglySeq.get(k) == nextUgly) k++; } return uglySeq.get(n-1); } }

    转载请注明原文地址: https://ju.6miu.com/read-17381.html

    最新回复(0)