剑指 Offer 49. !!丑数 (找数学规律)

这篇具有很好参考价值的文章主要介绍了剑指 Offer 49. !!丑数 (找数学规律)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

参考资料

剑指 Offer 49. 丑数
我们把只包含质因子 235 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。

 

示例:

输入: n = 10
输出: 12
解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。
说明:  

1 是丑数。
n 不超过1690

注意到丑数只包含质因子是2,3,5。所以,丑数必然是有这三个数若干次相乘得到。而丑数序列保持从小到大,所以当前的丑数必然是前面某个丑数乘2或者3或者5得到的。文章来源地址https://www.toymoban.com/news/detail-617884.html

class Solution {
// 自己写的暴力法,通过了500个测试用例,最后到n等于一万多时还是超时了
   public int nthUglyNumber1(int n) {
        int i=0;
        while(n>0){
            i++;
            if(isUgly(i)){
                n--;
            }            
        }
        return i;
    }
    public boolean isUgly(int num){
        while(num%2==0){
            num/=2;
        }
        while(num%3==0){
            num/=3;
        }
        while(num%5==0){
            num/=5;
        }
        return num==1;
    }

// 参考力扣K神写的,
//主要思想是所有丑数都是2,3,5这三个数的乘积;
// 而当前的丑数是“上一个”丑数乘上2或者3或者5之后的结果,
//注意维持大小顺序(see Math.min(Math.min(n2,n3),n5);)。
    public int nthUglyNumber(int n) {
        int[] dp = new int[n];
        dp[0]=1;
        int a=0,b=0,c=0;
        for(int i=1;i<n;i++ ){
            int n2=dp[a]*2,n3=dp[b]*3,n5=dp[c]*5;
            dp[i]=Math.min(Math.min(n2,n3),n5);
            if(dp[i]==n2) a++;
            if(dp[i]==n3) b++;
            if(dp[i]==n5) c++;
        }
        return dp[n-1];
    }
}

到了这里,关于剑指 Offer 49. !!丑数 (找数学规律)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 网络结构数据分析:揭示复杂系统背后的规律

    💂 网站推荐:【 神级源码资源网 】【 摸鱼小游戏 】 🤟 前端学习课程: 👉 【 28个案例趣学前端 】【 400个JS面试题 】 💅 想寻找共同学习交流、摸鱼划水的小伙伴,请点击【 摸鱼学习交流群 】 随着网络技术的不断发展,人们在互联网上留下了海量的数据,这些数据反映

    2023年04月14日
    浏览(56)
  • springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码...

    多线程创建方式一:继承Thread类 多线程创建方式二:实现Runnable接口 jdk5.0新增两种创建多线程的方式 image.png image.png image.png image.png image.png image.png image.png image.png image.png image.png image.png image.png image.png 优先级 image.png image.png image.png image.png image.png image.png 线程安全问题 image.p

    2024年01月21日
    浏览(48)
  • 【LeetCode: 剑指 Offer 60. n个骰子的点数 | 数学+ 暴力递归=>记忆化搜索=>动态规划】

    🍎作者简介:硕风和炜,CSDN-Java领域新星创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享💎💎💎 🍎座右铭:人生如棋,我愿为卒,行动虽慢,可谁曾见我后退一步?🎯🎯🎯 剑指 Offer 60. n个骰子的点

    2023年04月19日
    浏览(59)
  • Leetcode-每日一题【剑指 Offer 26. 树的子结构】

    输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构) B是A的子结构, 即 A中有出现和B相同的结构和节点值。 例如: 给定的树 A:      3     /    4   5   /  1   2 给定的树 B:    4    /  1 返回 true,因为 B 与 A 的一个子树拥有相同的结构和节点

    2024年02月13日
    浏览(57)
  • (树) 剑指 Offer 26. 树的子结构 ——【Leetcode每日一题】

    难度:中等 输入两棵二叉树 A 和 B ,判断 B 是不是 A 的子结构。(约定空树不是任意一个树的子结构) B 是 A 的子结构, 即 A 中有出现和B相同的结构和节点值。 例如: 给定的树 A : 给定的树 B : 返回 true ,因为 B 与 A 的一个子树拥有相同的结构和节点值。 示例 1: 输入:A =

    2024年02月15日
    浏览(49)
  • 二叉树BFS/DFS及重要递归接口--拿下二叉树--拿下数据结构--拿到好offer

     堆是一种特殊的二叉树(完全二叉树),由于有堆排序等实际的需求,堆是由类似顺序表的结构实现的,这是为了方便堆能够通过下标找到parent和child,进行比较大小以及交换等操作。 这里我们建立二叉树的每个结点,包含左右孩子指针left和right,还有存储的数据data。 然后

    2023年04月08日
    浏览(52)
  • 剑指offer41.数据流中的中位数

     我一开始的想法是既然要找中位数,那肯定要排序,而且这个数据结构肯定要能动态的添加数据的,肯定不能用数组,于是我想到了用优先队列,它自己会排序都不用我写,所以addNum方法直接调用就可以,但是找中位数就很麻烦,它不能根据下标访问,于是我写了一个很屎

    2024年02月15日
    浏览(43)
  • 算法、数据结构、计算机系统、数据库MYSQL、概率论、数学实验MATLAB、数学建模、马原、英语、杂项、QT项目

    可以三个条件 以此类推 (condition1)?x:(condition2)?y:z string变成int int 变成string 可以用循环 模运算展开式推导 我们要证明等式: (a * b) mod m = ((a mod m) * (b mod m)) mod m 假设 a = q1 * m + r1 ,其中 q1 是 a 除以 m 的商, r1 是 a 除以 m 的余数。类似地,假设 b = q2 * m + r2 ,其中

    2024年02月08日
    浏览(66)
  • 2022大三计算机 | 保研面试 | 专业课(数据结构、计组等) 数学(离散等) | 资料整理

    准备复习专业课和数学,每天会复习8个问题/知识点,大概6月底全部复习完 专业课 :数据结构、计算机组成原理、操作系统、计算机网络、数据库、软件工程、汇编、编译、程序设计语言 数学 :高数、线代、离散 借CSDN罗列已整理的题目,便于对照自答。均已整理, 需要资

    2024年02月11日
    浏览(89)
  • 2023届计算机保研面试基础专业问题(数据结构、算法、计算机语言、计算机网络、数据库、操作系统、数学)

    以下的专业相关基础问题,是在2022年暑期准备面试过程中,断断续续准备的,最终上岸厦大啦,也希望这些内容对后面准备保研的学弟学妹们有帮助。少即是多、快即是慢,希望大家也不必太焦虑,慢慢来比较快! 堆、栈、队列、链表等数据结构 树:红黑树、二叉树的各类

    2024年02月15日
    浏览(63)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包