zoukankan      html  css  js  c++  java
  • 264. Ugly Number II

        /*
         * 264. Ugly Number II 
         * 2016-6-22 by Mingyang
         * http://www.cnblogs.com/Liok3187/p/4751127.html
         * 这道题目略抽象,自己慢慢体会
         * 注意的是idx++并不代表乘以2,3,5的基数,而是uglyNumber数组的第idx个值
         * 其实吧,这个题目就相当于2,3,5三个相互竞争,不过前提是都要乘以uglyNumber的数,不能乘以7以保证纯粹
         * 那么有这么一条规矩,开始的都是都从第一个uglyNumber走,如果2中标以后,2的index要加加,为了平衡游戏
         * 不然2会一直中标下去,其他对手没的玩,那么2接下来就要乘以第二个更大的数,这样3才能找到优势拿下第二个
         * 这个题目的原理就是通过前面的uglyNumber来不断的构造后面的uglyNumber
    * An ugly number must be multiplied by either 2, 3, or 5 from a smaller ugly number.
    */ public int nthUglyNumber(int n) { int[] uglyNumbers = new int[n]; uglyNumbers[0] = 1; int idx2 = 0; int idx3 = 0; int idx5 = 0; int counter = 1; while (counter < n) { int min = Math.min(Math.min( uglyNumbers[idx2] * 2, uglyNumbers[idx3] * 3), uglyNumbers[idx5] * 5); if (min == uglyNumbers[idx2] * 2) { idx2++; } if (min == uglyNumbers[idx3] * 3) { idx3++; } if (min == uglyNumbers[idx5] * 5) { idx5++; } uglyNumbers[counter] = min; counter++; } return uglyNumbers[n - 1]; }
  • 相关阅读:
    Java语言----三种循环语句的区别
    选择结构if语句和switch语句的区别
    java中实现多态的机制是什么?
    SpringMVC的运行原理
    Struts1运行原理以及整合步骤
    我回来啦!
    Struts2的运行原理和运行与原理
    初步认识 Web Service
    spring Aop 注解
    mina2.0 spring
  • 原文地址:https://www.cnblogs.com/zmyvszk/p/5610309.html
Copyright © 2011-2022 走看看