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

题目描述 把只包含质因子2、3和5的数称作数(Ugly Number)。 例如6、8都是数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个数。求按从小到大的顺序的第N个数。...思路: 首先从数的定义我们知道,一个数的因子只有2,3,5,那么数p = 2 ^ x * 3 ^ y * 5 ^ z 那么我们可以理解为每一个数字都是上一个数字×2或者3,5来的 因此我们只需要定义三个数字...,i2保存由乘2得到的最小的数,同理的i3,i5 为什么i2可以保存×2的最小的数呢?...因为i2是保存从1开始每一位数×2的结果 那么前面的x2的数必定比后面的×以2的数小 且如果取了当前值为数就不能再取了,因此每次需要进行向后+1,x2最小的值只能来自于下一位了 所有的数分为三种类型...return list.get(list.size()-1); } 提一下为什么这里用if并列三个条件而不是else if,因为这里可能同时出现相同的计算结果,因为这里存在一个数公倍数的问题

19220

题目描述 把只包含质因子2、3和5的数称作数(Ugly Number)。例如6、8都是数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个数。求按从小到大的顺序的第N个数。...解题思路 判断一个数是不是数,最简单的方法就是让这个数不断除以2,3,5。要求第N个数,只要从1开始,依次判断每个数是不是数,如果是,则相应的序号加1,直到序号为N,就是我们要的数了。...换个思路,我们只求数,不要去管非数。...每个数必然是由小于它的某个数乘以2,3或5得到的,这样我们把求得的数都保存下来,用之前的数分别乘以2,3,5,找出这三这种最小的并且大于当前最大数的值,即为下一个我们要求的数。

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

数II

注意事项:我们可以认为 1 也是一个数 样例 如果n = 9, 返回 10 思路 其实改题的题意就是在所有 数 列表中,找到第 n 个数。...最简单的做法是从 1 开始,判断每一个数是否是一个数,是的话则加到数列表中,直到数列表的大小等于 n,但是这种方法效率较低,我们可以根据规律而尝试只创造出有效的数。...观察规律可得,数是取已有的数乘以 2 或 3 或 5 得到的,那么我们可以先将特殊的数 1 放进数列表中。...因为已存在的数肯定在列表中是按照顺序存放的,所以对于乘以 2 而言,肯定存在一个数 p2,在它之前的每一个数乘以 2 都是当前列表中最后一个数的,通用,在它之后的每一个数乘以 2 的结果都是大于当前列表中最后一个数的...我们只需要取出 p2, p3, p5 位置的那个数,分别乘以 2, 3, 5 将结果最小的存入到数列表中即可。直到数列表的个数达到 n。

34520

六十六、数系列,的颠覆我的思想

我说的数,不要以为我很丑,而且我也觉得我很丑。数算法题,我在阿里的题目中看见过。阿里面试曾考过此数,大家务必重视此数。...数 我们把只包含因子2,3,5的数称作数,求按从小到大的顺序,第1500个数。习惯上把1当作第一个数。 「Talk is cheap ,show me my code !」...Leetcode 263:判断给定的数是否为数 编写一个程序判断给定的数是否为数。 数就是只包含质因数 2, 3, 5 的正整数。小于1的不是数,1是数,2、3、4、5都是数。...想一想数肯定是一个来源2,3,5 其中一个倍数,在第一个数处建立三个索引,分别代表质因子2、质因子3、质因子5; 找出2 * 数数组[质因子2索引]、3 * 数数组[质因子3索引]、5 * 数数组...超级数的定义是正整数并且所有的质数因子都在所给定的一个的质数集合内。 超级数与找出第 n 个数不同的地方在于primes质因数不同。 方法和上面三指针的dp完全一样。

23430
领券