49_剑指offer_java_丑数

AD域控设置客户端桌面壁纸 此时再右键wallpaper文件夹,共享选项下的网络路径已经有了。找到该域下的组策略编辑器(第一步有)并按照图下所示找到桌面壁纸的策略设置,点击进去。在高级共享里可以设置共享名和同时共享的用户数量限制。点击下拉箭头,找到Everyone并选择,点击添加后,点击共享。然后可以看到刚才的新建文件夹策略在域控服务器和客户端都生效了。右键wallpaper文件夹->属性,点击共享选项,点击共享。在弹出的窗口里,按照图下所示设置,点击应用并且确认。在弹出的窗口里,按图示找到文件夹,右键新建文件夹。 阅读详情

目录

题目描述

测试用例

题目考点

解题思路

参考解题

补充


题目描述

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

 

测试用例

  • 功能测试(输入2、3、4、5、6等)
  • 特殊输入测试(边界值1;无效输入0)
  • 性能测试(输入较大的数字,如1500)

 

题目考点

  • 考察应聘者对时间复杂度的理解。
  • 考察应聘者的学习能力和沟通能力,当应聘者听到不熟悉的概念之后,要有主动积极的态度,大胆向面试官提问。

 

解题思路

1、直接解题:不管一个数是不是丑数,都对它进行计算,时间效率低。

 

2、空间换时间:

1)、首先,由已知丑数得未知丑数的方法:根据丑数的定义,丑数应该是另一个丑数乘以2、3或者5的结果(1除外)。

2)、因此,构建数组保存已知丑数,并且按照1中规律产生新丑数,最后按照规律(从小到大存放)将新丑数存入数组。

 

直接解题

/**
 * 丑数
 *
 */
public class Solution {
    /**
     * 求出第index个丑数
     */
    public int getUglyNumber_Solution(int index) {
        
        // 异常
        if (index <= 0) {
            return 0;
        }

        int count = 0;
        int base = 0;
        while (count != index) {
            base++;
            if (isUglyNumber(base)) {
                count++;
            }
        }
        return base;

    }

    /**
     * 判断是否为丑数
     * @param number
     * @return
     */
    boolean isUglyNumber(int number) {
        while (number % 2 == 0) {
            number /= 2;
        }
        while (number % 3 == 0) {
            number /= 3;
        }
        while (number % 5 == 0) {
            number /= 5;
        }
        return number == 1;
    }


}

 

参考解题

public class Solution {
    // 按照从小到大顺序求出第index个丑数
    // 空间换时间
    public int GetUglyNumber_Solution(int index) {
        // 异常
        if(index <= 0){
            return 0;
        }
        
        // 按照顺序存放所有丑数
        int[] dp = new int[index];
        dp[0] = 1;
        int nextUglyIndex = 1;
        
        // 存储乘以2、3、5 的下标
        int i2 = 0, i3 = 0, i5 = 0;
        
        // 保证数组排序,由已知丑数得新丑数
        while(nextUglyIndex < index){
            int min = Math.min(Math.min(dp[i2] * 2, dp[i3] * 3), dp[i5] * 5);
            dp[nextUglyIndex] = min;
            
            if(dp[i2] * 2 == min){
                i2++;
            }
            if(dp[i3] * 3 == min){
                i3++;
            }
            if(dp[i5] * 5 == min){
                i5++;
            }
            nextUglyIndex++;
        }
        return dp[index - 1];
    }
}

 

补充

空间和时间要求可以咨询面试官

 

全覆盖路径规划开源项目Clean-robot-turtlebot3关键函数解析(上) 本系列文章主要介绍全覆盖路径规划开源项目Clean-robot-turtlebot3的相关内容,包含如下四篇文章,分别介绍了开源项目Clean-robot-turtlebot3流程的概括总结、ROS坐标系常用坐标及其变换、Clean-robot-turtlebot3关键函数解析等内容。 阅读详情

相关推荐

【代码审计】RuoYi定时任务漏洞:从SQL注入到RCE的攻防演变

本文深入剖析了RuoYi框架定时任务模块从早期版本无校验到引入黑白名单机制,再到被组合利用实现RCE的完整漏洞演变过程。文章详细分析了SQL注入与定时任务功能结合导致的远程代码执行漏洞,并总结了代码审计与安全开发的核心要点,为开发者提供了重要的安全参考。

yellow的专栏 699

剑指offer面试题49(java版):丑数

welcome to my blog 剑指offer面试题49(java版):丑数 题目描述 把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。 暴力解法(不满足时间复杂度要求) 主要是巩固基础 int i,j=1;这种写法只是对j进行了初始化!!! 不要在循环内部...

littlehaes的博客 488

基于深度强化学习的柔性作业车间动态调度

在追求敏捷和灵活的生产调度方面,处理不可预测的动态事件的能力变得越来越重要。与此同时,生产系统中的网络-物理融合产生了大量需要实时挖掘和分析的工业数据。为了便于这种实时控制,本研究提出了一种分层分布式的体系结构来解决动态柔性作业车间调度问题。采用双深度Q网络算法(DDQN)训练调度智能体,捕捉生产信息与调度目标之间的关系,为具有恒定任务到达的柔性作业车间实时做出调度决策。为了处理动态调度中问题的可变规格说明,提出了专门的状态和动作表示法。此外,还提出了一种代理奖励整形技术(surrogate reward

太剧烈的快乐与太剧烈的悲哀是有相同之点的——同样地需要远离人群! 1万+

丑数(剑指offer 49)Java动态规划

目录 一、题目描述 二、思路讲解 三、Java代码实现 四、时空复杂度分析 一、题目描述 我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。 示例: 输入: n = 10 输出: 12 解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。 说明: 1是丑数。 n不超过1690。 二、思路讲解 首先可以想到,所有的丑数都是由前面的丑数乘上2、3或...

m0_49499183的博客 144

MEMS惯性传感器关键参数解析与误差优化策略

本文深入解析了MEMS惯性传感器的关键性能参数,如零偏稳定性、噪声与随机游走、振动整流误差等,并阐述了这些误差如何导致设备导航漂移、姿态不稳等问题。文章重点探讨了从硬件选型、系统设计到校准补偿、算法融合(如卡尔曼滤波)以及温度补偿等实战优化策略,旨在帮助工程师有效提升自动驾驶、无人机等设备的测量精度与稳定性。

weixin_28363123的博客 415

ThingsBoard - 设备接入

设备接入笔记

qq_53839898的博客 1455

[剑指 offer]49 丑数 Java实现

题目 我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。 示例: 输入: n = 10 输出: 12 解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。 说明: 1 是丑数。 n 不超过1690。 代码 方法一 暴力循环 惨遭超时(但确实是一种可行方法 class Solution { public static int nthUglyNumber(int n) { for (in.

BedivereAlter的博客 440

FPGA入门200例(17):如何阅读RTL原理图(Schematic)?将Verilog代码与门级电路对应

本文针对FPGA开发新手常见误区,重点讲解了RTL原理图的重要性和阅读方法。文章指出,仅通过仿真验证代码会导致板级测试异常,而RTL原理图能直观呈现Verilog代码对应的硬件结构(门电路、寄存器、多路选择器等)。通过"识别基础元件→跟踪信号路径→验证逻辑关系"的三步法,新手可以建立代码与硬件的映射思维,排查冗余逻辑、意外锁存器等错误。文章还结合Vivado/Quartus工具操作指南和典型代码案例,帮助读者掌握从代码到硬件实现的转换过程,避免混淆RTL与门级原理图、忽略信号位宽等常见误

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 203

剑指Offer-题49(Java版):丑数

参考自:《剑指Offer——名企面试官精讲典型编程题》 题目:丑数 把只包含因子2、3和5的数称作丑数(Ugly Number)。求按从小到大的顺序的第1500个丑数。例如6、8都是丑数,但14不是,因为它包含因子7。习惯上我们把1当做第一个丑数。 主要思路:需要保存和利用之前已经找到的丑数,并使这些丑数按从小到大排序。关键在于,找出三个已存在的丑数,分别乘以因子2,3,5,生成三个新丑数,...

浊酒入清梦的博客 388

基于FFT的轴承故障诊断 - MATLAB代码和详细解释

最后,我们可以根据异常特征的位置和特征分析来确定轴承故障的类型。最后,我们可以根据异常特征的位置和特征分析来确定轴承故障的类型。因此,通过分析频谱图,我们可以识别轴承故障的特征。因此,通过分析频谱图,我们可以识别轴承故障的特征。我们可以选择适当的阈值,并在频谱图上标记异常特征。通过这种基于FFT的轴承故障诊断方法,我们可以快速、准确地检测和诊断轴承故障。接下来,我们将应用FFT来获取振动信号的频谱信息,频谱显示了信号在不同频率上的能量分布。通过将异常特征标记在频谱图上,我们可以直观地识别轴承故障的存在。

COWizard的博客 613

电气论文实现:前推回代在IEEE33节点中的潮流计算实现(matlab,python)

本文首先介绍了前推回代的原理。然后基于IEEE33节点算例,分别用python和matlab运用前推回代进行了潮流计算。

总裁余(余登武)博客 8608

剑指offer面试题49:丑数(Java 实现)

题目: 我们把只包含因子2,3,5的数称为丑数(Ugly Number). 求按从小到大的顺序的第1500个丑数。 例如6,8都是丑数,但14不是,因为它含有因子7.习惯上我们把1当作第一个丑数 方法一:逐个判断每个整数是不是丑数的解法,直观但不够高效(暴力法) 思路:所谓一个数m是另一个数n的因子,是指n能被m整除,也就是说n%m==0.根据丑数的定义,丑数只能被2,3,5整除。也就是说...

weixin_41163113的博客 290

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

剑指 Offer 49. 丑数java

思路:我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。 解题思路,没说的,暴力穷举。 class Solution { public int nthUglyNumber(int n) { int num=0; int curr=1; int temp=1; while(true){ temp=curr; while(te

yueheng1的博客 294

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Java详解剑指offer面试题49--丑数

Java详解剑指offer面试题49–丑数 把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。 穷举法,挨个判断是否是丑数,即使那个数不是丑数也要判断,显然时间复杂度太高。 有没有方法每一步计算只是得到丑数呢?根据丑数的定义,所有丑数都是2、3、5这三个因子的任意搭配的任意多次乘积,比如2x2,2x3, 2x2x3x5等等。那么从1开始,分别乘以2、3、5,得到2、3、5三个丑

快乐李同学的博客 487

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

剑指offer—49.丑数—分析及代码(Java)

剑指offer——49.丑数——分析及代码[Java]一、题目二、分析及代码1. 标记位置 + 依次求解(1)思路(2)代码(3)结果三、其他 一、题目 把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。例如 6、8 都是丑数,但 14 不是,因为它包含质因子 7。 习惯上我们把 1 当做是第一个丑数。求按从小到大的顺序的第 N 个丑数。 二、分析及代码 1. 标记位置 + 依次求解 (1)思路 由于丑数只包含质因子 2、3 和 5,可通过将这 3 个因子相乘,按由小到大的顺序获得各个

江南土豆的博客 212

【java】剑指offer49_丑数

题目描述 我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。 示例: 输入: n = 10 输出: 12 解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。 说明: 1是丑数。 n不超过1690。 参考解题思路:动态规划,用三个指针维系三个质因子构成的所有构成丑数的可能序列排序 丑数必然是质因子的乘积可能性,假设当前存在 3 个数组nums2, nums3, nums5分别代表丑...

ic_xcc的博客 114

剑指offer(Java实现)49 - 丑数

丑数-49 我们把只包含因子2、3和5的数称作丑数(Ugly Number)。 例如6、8都是丑数,但14不是,因为它包含因子7。 求第n个丑数的值。 样例 输入:5 输出:5 注意:习惯上我们把1当做第一个丑数。 首先,判断一个数是不是丑数 class Solution { public boolean isUgly(int num) { if(num <= 0)...

rookie_0821的博客 183

剑指 Offer 49. 丑数java题解

class Solution { public int nthUglyNumber(int n) { int[] dp=new int[1691]; int a=0,b=0,c=0; dp[0]=1; for(int i=1;i<n;i++){ int n2=dp[a]*2; int n3=dp[b]*3; int n5=dp[c]*5;

乾坤未定,你我皆是黑马 175

java 剑指offer之[数据结构 中等]JZ49 丑数

题目的链接在这里:https://www.nowcoder.com/practice/6aa9e04fc3794f68acf8778237ba065b 目录题目大意一、示意图二、解题思路错误代码arrayList 题目大意 把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第 n个丑数。 数据范围:0 \le n \le 20000≤n≤2000 要求:空间复杂度 O(n)O(n) ,

wzw的博客 2029

【Java】 剑指offer(49) 丑数

本文参考自《剑指offer》一书,代码采用Java语言。 更多:《剑指Offer》Java实现合集 题目    我们把只包含因子2、3和5的数称作丑数(Ugly Number)。求按从小到大的顺序的第1500个丑数。例如6、8都是丑数,但14不是,因为它包含因子7。习惯上我们把1当做第一个丑数。 思路   直观思路:逐一判断每个整数是否为丑数,效率太低。   空间换时间的解法: ...

weixin_30752699的博客 130

剑指Offer系列(java版,详细解析)49.丑数

题目描述 剑指 Offer 49. 丑数 难度中等149收藏分享切换为英文接收动态反馈 我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。 示例: 输入: n = 10 输出: 12 解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。 说明: 1 是丑数。 n 不超过1690。 注意:本题与主站 264 题相同:https://leetcode-cn.com/problems/ugly-number-

Viper的程序员修炼手册 637

java丑数算法_剑指Offer Java版 面试题49:丑数

题目:把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。练习地址逐个判断每个整数是不是丑数的解法,直观但不够高效public class Solution {public int GetUglyNumber_Solution(int index) {if (index...

weixin_28990983的博客 137

【LeetCode】剑指 Offer 49. 丑数 p240 -- Java Version

剑指 Offer 49. 丑数 -- (解题方法:1、枚举,2、动态规划)。我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number。求按从小到大的顺序的第 n 个丑数。

汤姆lazy的优快云博客 580

[算法练习及思路-leetcode剑指offer(Java解法)]No49.丑数

题号:剑指 Offer 49 题目名:丑数 原题URL:https://leetcode-cn.com/problems/chou-shu-lcof/ 题目描述 我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。 示例 示例 1: 输入: n = 10 输出: 12 解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。 限制 1 是丑数。 n 不超过1690。 思路 1.多指针+动态规划 2.可以看到

叶落雨飘的博客 178

​每日一题-剑指Offer49. 丑数​. java

目录 描述 示例 思想 代码 描述 把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。 示例 输入: n = 10 输出: 12 解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。 思想 动态规划 代码 class Solution { public int nthUglyNumber(int n) { int[] dp = new i...

m0_60309952的博客 450

剑指 Offer 49. 丑数(java实现)--LeetCode

文章目录题目:解法1:heap 题目: 我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。 示例: 输入: n = 10 输出: 12 解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。 说明: 1 是丑数。 n 不超过1690。 注意:本题与主站 264 题相同:https://leetcode-cn.com/problems/ugly-number-ii/ 解法1:heap /** * 思路:

一碗机智的糖浆的博客 143
上一篇: 48_剑指offer_java_最长不含重复字符的子字符串
下一篇: 50_剑指offer_java_第一个只出现一次的字符
Longtermevolution
博客等级 码龄9年 113粉丝 249原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值