首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

剑指Offer面试题:29.丑数

一、题目:丑数 题目:我们把只包含因子2、3和5的数称作丑数(Ugly Number)。求按从小到大的顺序的第1500个丑数。例如6、8都是丑数,但14不是,因为它包含因子7。...根据丑数的定义,丑数只有2,3,5这三个因子,那么我们就拿数字除以这三个因子。...true : false; }   该算法非常直观,代码也非常简洁,但最大的问题就在于每个整数都需要计算。即使一个数字不是丑数,我们还是需要对它做求余数和除法操作。...比如将丑数数组中的数字按从小到大乘以2,直到得到第一个大于M的数为止,那么应该是2*2=4M,所以M2=6。同理,M3=6,M5=10。所以下一个丑数应该是6。   ...由对比可以看出,一个简单的优化,再通过6KB的空间换取了巨大的时间效率,在实际开发中是一个值得实践的解决思路(当然,事先得权衡一下利弊)。

28720

java完善程序题_JAVA 程序题

9.输入一个整数,求这个整数中每位数字相加的和  10.编写一个java应用程序,要求如下:  (1)声明一个String类的变量并初始化值“Hello World”。  ...14.程序功能:求能被3整除且至少有一位数字为5的三位数的个数。  15.程序功能:求三位奇数中,个位数字与十位数字之和除以10所得的余数是百位数字的数的个数。  16.解百马百瓦古题。...27.程序功能:有一个三位数满足下列条件: (1)三位数字各不相同; (2)此数等于它的各位数字的立方和。求这种三位数的个数。  28.程序功能:求1~130之间所有整数的立方和并输出结果。...32.程序功能:若一个四位正整数是另一个正整数的平方,且各位数字的和是一个平方数,则称该四位正整数是“四位双平方数”。...81.求三位数中,个位数字与十位数字之和除以10所得的余数是百位数字,且百位数字是偶数的数的个数。  82.一个素数称之为超级素数,若该素数依次去掉个位,十位,...等等,每次所得的数仍然是素数。

1.7K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    11.09作业详解(弹球距离,素数,最大公约数最小公倍数,求整数位数及其各位数字之和,打印乘法表)

    ,且想办法然函数中的某个形参无限逼近与该条件,由题目可知,这个限制条件是让h*p^n逼近与0.001即可,当h*p^n满足小于0.001时返回h*p^(n-1),然后再往前推直到求到第一个dist函数,...,素数的概念一个数的因子只有1和它本身,1除外。...所以由概念可知,假设一个数为x,当你用for循环遍历从2到x-1的数时,如果找到中间的某个数能被x整除,则说明它的因子不只有1和它本身,x为合数,这时结束求因子的for循环。...10法,接下来我以123为例讲一下 首先从位数入手,第一次循环123/10=12,第二次12/10=1,第三次1/10=0...由此可知,当跳出循环时,循环的次数等于该整数的位数 再说各个位上的数字,第一次循环...123%10=3,第二次12%10=2,第三次1%10=1...这道题只用求和,所以不需要考虑求出各个位上的数字的顺序,如果题目要求正向输出各个位上的数字,就在while中把各个位上的数字赋给一个数组,

    11610

    那些年,我们一起做过的 Java 课后练习题(6 - 10)

    分析 在循环中,只要除数不等于 0,用较大数除以较小的数,将较小的一个数作为下一轮循环的大数,取得的余数作为下一轮循环的较小的数,如此循环知道较小的数的值为 0,返回较大的数,此数极为最大公约数,最小公倍数为两数之积除以最大公约数...、空格、数字和其他字符的个数; 分析 遍历字符串,然后看每个字符属于的类别,分别计数; 实现 import java.util.Scanner; /** * Created with IntelliJ...a *= 10; i++; } System.out.println("最终和:" + sum); } } 结果 实例 9 题目 一个数如果恰好等于它的因子之和...分析 求 num 的各个因子,然后用一个变量 sum 来计算一个数 num 的因子之和,最后判断 sum 和 num 是否相等,若相等则说明该数是一个完数,若不相等则说明不是。...} } // 判断各个因子之和是否等于该数 if (sum == num) { return true; }

    49430

    【编程题】Java编程题一(10道)

    ,其各位数字立方和等于该数本身。...程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。.../**在循环中,只要除数不等于0,用较大数除以较小的数,将小的一个数作为下一轮循环的大数,取得的余数作为下一轮循环的较小的数,如此循环直到较小的数的值为0,返回较大的数,此数即为最大公约数,最小公倍数为两数之积除以最大公约数...,其中a是一个数字。...sum = sum + b; a = a * 10; ++ i; } System.out.println(sum); } } 【程序9】 题目:一个数如果恰好等于它的因子之和

    2.2K80

    基础算法(一)

    最近看了《Java编程那些事》博客专栏,在讲到Java流程控制那块,提到了很多自己当初学习过程中涉及到的小算法,都很经典,以后会不断的将接触到的算法更新到本博文中,供自己以后查看,也可以作为大家学习的一个小资料...该问题中体现了一个基本的算法——数字拆分,需要把一个数中每位的数字拆分出来,然后才可以实现该逻辑。...该题是一个基本的数字逻辑,在实际解决该问题时,首先要发现该数字的规律,然后按照该规律来设计数组即可。        ...(num[i] + " "); } System.out.println(); //换行        在该代码中,初始化一个长度为20的数组,首先将数组中的前两个元素赋值成1,然后循环对后续的元素的赋值...歌手打分        要求:在歌唱比赛中,共有10位评委进行打分,在计算歌手得分时,去掉一个最高分,去掉一个最低分,然后剩余的8位评委的分数进行平均,就是该选手的最终得分。

    97400

    一行代码能做什么?

    题目解析 如果一个数是 2 的次方数的话,那么它的二进数必然是最高位为1,其它都为 0 ,那么如果此时我们减 1 的话,则最高位会降一位,其余为 0 的位现在都为变为 1,那么我们把两数相与,就会得到...题目描述 给定一个整数,写一个函数来判断它是否是 3 的幂次方。 题目解析 正常的思路是不停地去除以 3,看最后的迭代商是否为 1。这种思路的代码使用到了循环,逼格不够高。...事实上,你在使用暴力破解法的过程中就能发现规律: 这 9 个数字中只有 2(它的倍数) 与 5 (它的倍数)相乘才有 0 出现。 所以,现在问题就变成了这个阶乘数中能配 多少对 2 与 5 。...可以发现,一个数字进行拆分后 2 的个数肯定是大于 5 的个数的,所以能匹配多少对取决于 5 的个数。 那么问题又变成了 统计阶乘数里有多少个 5 这个因子。...需要注意的是,像 25,125 这样的不只含有一个 5 的数字的情况需要考虑进去。 比如 n = 15。那么在 15!

    49810

    它适用于哪些问题?这篇文章给你答案

    如果输入的大小比较小,则具备指数运行时间的算法可能会比较适合。 其次,通过用近似算法替代确定性算法,我们仍然能够在多项式时间内找到近优解。 近似算法的复杂度可以从输入大小和近似因子中推断出来。...分区问题 在计算机科学领域,该问题的定义是:给定多重正整数集 X,它可以被分割为两个元素之和相等的子集 X1 和 X2,即每个子集的数值之和与另一个子集相等。...每一级的首要目标是构建一个分支,将当前数字分配给总和最小的子集。首先通过贪婪数字分割找出总和,然后切换到优化,得到全多项式时间近似解。...Karmarkar-Karp 算法 Karmarkar-Karp 算法指以降序方式排列数字的最大差分方法,该方法将差值替换掉原来的数字不断放进集合中。...在该算法中,我们可以通过去除冗余和最小化空间浪费来包装不同形状和大小的对象。 例如:给定一个包含 n 个项的集合,每个项的大小分别为 s1,s2,..

    1.6K60

    剑指offer(31-40题)题解

    在这里插入图片描述 32 把数组排成最小的数 题目描述 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。...例如6、8都是丑数,但14不是,因为它包含质因子7。习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。 思路: 这题自己的方法只过了87%的样例。当数据大的时候就凉了。...先说说我自己的想法,怎么想的,他首先没说数据范围是啥,所以我一直以为这个会是一个慢慢试探的过程。 刚开始尝试的肯定是暴力。他说第N个,那我我就一个个试。每个数除以2、3、5直到无法除看看找到第n个。...; } } 34 第一个只出现一次的字符 题目描述 在一个字符串(0一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写...题目描述 统计一个数字在排序数组中出现的次数 思路: 数组问题,一般枚举能过但是不够优雅。

    35740

    Java经典算法(二)

    程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。 (2)如果n !...分析:在循环中,只要除数不等于0,用较大数除以较小的数,将小的一个数作为下一轮循环的大数,取得的余数作为下一轮循环的较小的数,如此循环直到较小的数的值为0,返回较大的数,此数即为最大公约数,最小公倍数为两数之积除以最大公约数...int x=b; b=a%b; a=x; } return a; } } 程序运行结果: 【程序12】 题目:一个数如果恰好等于它的因子之和...); } } } 程序运行结果: 【程序14】 题目:一个整数,它加上100后是一个完全平方数,加上168又是一个完全平方数,请问该数是多少?...("1~"+N+"的阶乘和为:"+sum); } } } 程序运行结果: 【程序17】 题目:输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。

    63840

    小小GCD、LCM拿下拿下

    GCD、LCM是算法当中的基础之基础,分别对应最大公约数、最小公倍数,在算法竞赛中涉及到的概率也是比较高的,GCD、LCM在小学时就涉及到了求法,本篇将给大家详解GCD、LCM这两个函数,并且提供最简单的模板...最大公约数(GCD) 也称为最大公因数或最大公因子,是指两个或多个整数共有的约数中最大的一个。在数学中,这是指能够同时被这些整数整除的最大的正整数。...若r2=0,则gcd(a,b)=r1,若r2≠0,则继续用r1除以r2,如此下去,直到能整除为止。其最后一个为被除数的余数的除数即为gcd(a, b)。...循环的条件是(m%=n)&&(n%=m)。这意味着只要m除以n的余数不为0,并且n除以m的余数也不为0,循环就会继续。在每次循环中,m和n都会更新为它们之间的余数。...这个过程会不断重复,直到其中一个变为0,最后返回的是a+b,下面我们模拟一下过程。 最大公约数(GCD)模板: int gcd(int m,int n){//辗转相除法 return n==0?

    8010

    Leetcode No.172 阶乘后的零

    思路一:计算阶乘 这种方法速度太慢了,但却是一个好的起点。虽然不会在面试中实现它,但是你可以简单的描述它是个解决问题的办法之一。 解决这个问题的最简单的办法就是计算 n!...,然后计算它的末尾数 0 个数。阶乘是通过将所有在 1和 n 之间的数字相乘计算的。例如,10!=10⋅9⋅8⋅7⋅6⋅5⋅4⋅3⋅2⋅1=3,628,800。因此,可以使用以下算法迭代计算阶乘。...如果一个数字末尾有零,那么它可以被 10 整除。除以 10 将删除该零,并将所有其他数字右移一位。因此,我们可以通过反复检查数字是否可以被 10 整除来计算末尾 0 的个数。...在 Java 中,我们需要使用 BigInteger,防止在计算阶乘的过程中溢出。...在这种方法中,我们将 n 除以 5 的每个幂。根据定义,5 的log5 N幂小于或等于 n。由于乘法和除法在 32 位整数范围内,我们将这些计算视为 O(1)。

    39230

    【JAVA-Day25】解密进制转换:十进制向R进制和R进制向十进制的过程

    它决定了每个位置上可以使用的符号及其所代表的权重。进制不仅仅是一种数学概念,它在计算机科学、电子工程和信息技术中扮演着关键角色。...在不同的进制中,我们使用不同的符号集合,通常包括0到某个基数之间的数字。 1.2 进制转换 进制转换指的是在不同进制之间改变数字的表示方式。...2.1 转换算法 将十进制数转换为R进制的一般算法如下: 用被转换的十进制数除以R,得到商和余数。 将余数作为R进制数的一位。 将商继续除以R,重复步骤1和2,直到商为0。...在本文中,我们学习了如何将十进制数转换为任意进制数(R进制),以及如何将其他进制数(R进制)转换为十进制数。这些转换方法是计算机科学和编程中的基础操作,对于处理不同进制的数据非常有用。...愿你在探索数字世界的旅途中收获丰富的知识和乐趣!

    6110

    Python算法分享系列-查找,排序,递归

    二分查找 --仅当列表是有序的时候才能用 思想: 1.目标是找数组中的某一个元素,暂叫item 2.找出整个数组中间的那个元素,它下标mid,数组被它一分为二 3.比较下标mid对应的元素和item,如果...在同一个数组中,所有元素的类型都必须相同(都为int、double等) 数字和链表区别: 数组: 连续空间, 预留空间, 查找方便, 插入麻烦,必须移动后面的所有元素,如果没有空间,必须将数组复制到其他地方...求x对y的余数,假定余数为z 求y与z的最大公约数即为x,与y的最大公约数 0没有公约数 最小公倍数: 思想: 两个数(x, y)的最小公倍数数的算法为:两个数相乘再除以他们的最大公约数 0没有公倍数...例如你每次输入iTesting,它返回你的总是同一个数字。 散列函数将不同的输入映射到不同的索引。...(填装因子是数组中被占用的位置,例如大小为3的数字,有2个被占用,则填装因子为2/3) 惯例放赞赏码:) END 关注iTesting

    2.4K60

    顶会最佳论文覆灭科学家们30多年期待:复杂度远超预期

    它的目标,简单来说就是在没有完整数据的情况下,通过有限的信息提前找到最佳策略。 在我们的生活中,例如股票市场的即时交易分析,还有导航路径的实时规划,都有在线算法的身影。...由于预先掌握了完整数据,在同等的数据规模下离线算法显著快过在线算法 想象一下,现在要从一系列数字中找出最大值,第一种情况是直接知道所有数字,另一种是比较完前面的数才知道后面的数字是多少,显然第一种情况的速度更快...k-server问题可以这样来描述: 给定一个度量空间和位于该空间指定位置的k个服务器,在该空间的不同位置中会出现一系列请求。 对于每个请求,都必须选择一个服务器来响应该请求。...而在这个过程当中,无论是系统还是外卖员在真的接到订单之前都不知道订单出现的时间和位置,此时的问题是如何将所有外卖员取餐所走的路程之和最小化。...而log6为一个2到3之间的常数,除以这样一个数不会带来结果的显著改变,也就证明了k-server问题中消耗不低于Ω(log²k)的结论。

    13710

    Java 菜鸟入门 | 常用进制转换

    而位权则指的是进位制中每一个固定位置所对应的单位制,而每一种进制中的某一个数的每位上都有一个权值 m,而且权值是位数减一,比如个位上的数的权值为 0(位数 1 - 1 = 0),而十位的权值为 1(位数...在 Java 学习中,我们难免会和各种进制打交道。今天就来看看,在 Java 中最常用的几个进制的相关概念,以及如何利用 Java 来实现他们之间的相互转换!...其中,整数部分采用除二取余,逆序排序的方法。具体方法是用 2 来整除一个十进制数,从而得到一个商和余数;然后再用 2 去除以商,从而又得到一个商和余数,重复这个步骤,直到最后得到的商小于 1 时为止。...(0.25)_{10}=(0.01)_2 八进制 所谓八进制,就是每 3 位二进制作为一个单元,其中最小的数是 0,最大的数是 7,一共 8 个数字。...此外还介绍了 Java 中如何进行十进制向其他进制的转换方法,以及如何将其他进制转换为十进制。如果你刚好这些内容对你有所帮助,那就来个一键三连吧!

    1.7K40

    它适用于哪些问题?这篇文章给你答案

    如果输入的大小比较小,则具备指数运行时间的算法可能会比较适合。 其次,通过用近似算法替代确定性算法,我们仍然能够在多项式时间内找到近优解。 近似算法的复杂度可以从输入大小和近似因子中推断出来。...每一级的首要目标是构建一个分支,将当前数字分配给总和最小的子集。首先通过贪婪数字分割找出总和,然后切换到优化,得到全多项式时间近似解。...Karmarkar-Karp 算法 Karmarkar-Karp 算法指以降序方式排列数字的最大差分方法,该方法将差值替换掉原来的数字不断放进集合中。...将 S 分割成 k 个子集,使这些子集中的数字总和相等,从而构建期望输出。该算法包含如下关键步骤: 以降序方式排列数字; 用差值替换掉原来的数字,直到只有一个数字; 采用回溯算法,完成分区。...在该算法中,我们可以通过去除冗余和最小化空间浪费来包装不同形状和大小的对象。 例如:给定一个包含 n 个项的集合,每个项的大小分别为 s1,s2,..

    50610

    【欧拉计划第 3 题】最大质因数 Largest prime factor

    思路分析 首先要理解清楚质因数的概念 质因数,在数论中是指能整除给定正整数的质数。除了1以外,两个没有其他共同质因子的正整数称为互质。...因为1没有质因子,1与任何正整数(包括1本身)都是互质 正整数的因数分解可将正整数表示为一连串的质因子相乘,质因子如重复可以用指数表示。根据算术基本定理,任何正整数皆有独一无二的质因子分解式。...只有一个质因子的正整数为质数 如果一个质数是某个数的因数,那么就说这个质数是这个数的质因数,并且这个因数一定是一个质数 每个合数都可以写成几个质数相乘的形式,这几个质数均称为该合数的质因数 例如:6...的质因子是 2 和 3(6 = 2 × 3);10 的质因子是 2 和 5(10 = 2 × 5) 求解质因数的方法中,比较常见的事短除法,它的具体求解步骤是 N/2 (N为任意大于 2 的自然数),得到商...步骤一的商继续除以 2,直到商不能被 2 整除 被除数加一,比较平方数是否小于被除数(若小于,则所得商继续除以 3,不能整除,则除以 5) 分层循环,当除数的平方大于等于被除数时退出循环,此时 N 为最大质因数

    47930

    Java 中常用进制转换

    而位权则指的是进位制中每一个固定位置所对应的单位制,而每一种进制中的某一个数的每位上都有一个权值 m,而且权值是位数减一,比如个位上的数的权值为 0(位数 1 - 1 = 0),而十位的权值为 1(位数...在 Java 学习中,我们难免会和各种进制打交道。今天就来看看,在 Java 中最常用的几个进制的相关概念,以及如何利用 Java 来实现他们之间的相互转换!...其中,整数部分采用除二取余,逆序排序的方法。具体方法是用 2 来整除一个十进制数,从而得到一个商和余数;然后再用 2 去除以商,从而又得到一个商和余数,重复这个步骤,直到最后得到的商小于 1 时为止。...(0.25)_{10}=(0.01)_2 八进制 所谓八进制,就是每 3 位二进制作为一个单元,其中最小的数是 0,最大的数是 7,一共 8 个数字。...此外还介绍了 Java 中如何进行十进制向其他进制的转换方法,以及如何将其他进制转换为十进制。如果你刚好这些内容对你有所帮助,那就来个一键三连吧!

    1.1K30
    领券