zoukankan      html  css  js  c++  java
  • 丑数

    题目

      把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。

    分析

      如何对每个数字进行丑数的判断,时间复杂度将会非常大,所以我们要从其他角度进行考虑。

      使用ArrayList<Integer> list去存储丑数,当list.size()小于index时,从list的第一个元素开始乘以2,直到所得结果大于list中的最后一个元素,即为x;从list的第一个元素开始乘以3,直到所得结果大于list中的最后一个元素,即为y;从list的第一个元素开始乘以5,直到所得结果大于list中的最后一个元素,即为z。然后找出x、y、z中最小的元素加入list中。

    代码

     1     public int min(int x, int y, int z){
     2         int temp = (x<y)? x:y;
     3         return (temp<z)? temp:z;
     4     }
     5     
     6     public int GetUglyNumber_Solution(int index){
     7         if(index==0)
     8             return 0;
     9         ArrayList<Integer> list = new ArrayList<Integer>();
    10         list.add(1);
    11         int a = 2, b = 3, c = 5;
    12         int x = 0, y = 0, z = 0;
    13         while(list.size() != index){
    14             int temp = list.get(list.size()-1);
    15             int i = 0, j = 0, k =0;
    16             while(temp>=list.get(i)*a){
    17                 i++;
    18             }
    19             x = list.get(i)*a;
    20             while(temp>=list.get(j)*b){
    21                 j++;
    22             }
    23             y = list.get(j)*b;
    24             while(temp>=list.get(k)*c){
    25                 k++;
    26             }
    27             z = list.get(k)*c;
    28             list.add(min(x, y, z));
    29         }
    30         return list.get(list.size()-1);
    31     }
  • 相关阅读:
    vue 中动画配置
    vue hash模式和404页面的配置
    vue 组件用法
    vue set方法
    vue 改变插值方法
    vue 接口统一管理
    Oracle同义词(Synonym)创建删除
    ASP.NET Core中间件实现分布式 Session
    plsql 导入导出表数据与表结构
    css3缩放 transform: scale() 使用缩放之后顶点对齐问题
  • 原文地址:https://www.cnblogs.com/jiqianqian/p/6950944.html
Copyright © 2011-2022 走看看