ToB企服应用市场:ToB评测及商务社交产业平台

标题: 每日算法之丑数 [打印本页]

作者: 火影    时间: 2022-12-21 10:37
标题: 每日算法之丑数
JZ49 丑数

题目

我们先看到题目,把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。
方法1:质因数分解(暴力)

思路

算法实现
问题
当输入数过大时,需要的时间会很长,所以此方法不行
代码
  1. package mid.JZ49丑数;
  2. import java.util.ArrayList;
  3. public class Solution {
  4.     public int GetUglyNumber_Solution(int index) {
  5.         int current = 1;
  6.         ArrayList<Integer> res = new ArrayList<>();
  7.         res.add(1);
  8.         while(true) {
  9.             if (res.size() == index) {
  10.                 return res.get(res.size() - 1);
  11.             }
  12.             current++;
  13.             if (check(current)) {
  14.                 res.add(current);
  15.             }
  16.         }
  17.     }
  18.     public boolean check(int num) {
  19.         while(num % 2 == 0) num /= 2;
  20.         while(num % 3 == 0) num /= 3;
  21.         while(num % 5 == 0) num /= 5;
  22.         return num == 1;
  23.     }
  24.     public static void main(String[] args) {
  25.         System.out.println(new Solution().GetUglyNumber_Solution(1500));
  26.     }
  27. }
复制代码
方法2

思路

代码

[code]package mid.JZ49丑数;public class Solution {    public int GetUglyNumber_Solution(int index) {        if (index




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4