zoukankan      html  css  js  c++  java
  • 丑数

    剑指offer34题:

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

    解题思路:本题剑指上说的很麻烦,其实思路很简单,我们只用比较3个数:用于乘2的最小的数、用于乘3的最小的数,用于乘5的最小的数。

    package com.nowcoder.jianzhi;
    
    import org.junit.Test;
    
    import java.util.ArrayList;
    
    /**
     * 把只包含质因子2、3和5的数称作丑数(Ugly Number)。
     * 例如6、8都是丑数,但14不是,因为它包含质因子7。
     * 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。
     * 算法思路:三路归并
     */
    public class GetUglyNumber_Solution_33 {
        public int GetUglyNumber_Solution(int n) {
            if(n<=0) return 0;
            ArrayList<Integer> list = new ArrayList<Integer>();
            list.add(1);
            int i = 0 ;
            int j = 0 ;
            int k = 0 ;
            while (list.size()<n){//循环index-1次,当list的大小小于所求的第n个元素的序列的时候
                int t = Math.min(list.get(i)*2,Math.min(list.get(j)*3,list.get(k)*5)); //找出三个数里面的最小值
                list.add(t);
                if(list.get(i)*2==t) i++;
                if(list.get(j)*3==t) j++;
                if(list.get(k)*5==t) k++;
            }
            return list.get(list.size()-1);
        }
        @Test
        public void test(){
            System.out.println(GetUglyNumber_Solution(1000)+" ");
        }
    }
  • 相关阅读:
    56. Merge Intervals
    Reorder List
    Merge Two Sorted Lists
    彻底删除kafka topic数据
    什么时候类加载
    checkpoint的作用
    case when
    SQL:将查询结果插入到另一个表的三种情况
    IFNULL函数
    kafka主要配置
  • 原文地址:https://www.cnblogs.com/bigdata-stone/p/11211034.html
Copyright © 2011-2022 走看看