剑指offer 面试题34 丑数
2017-05-30 22:06
393 查看
剑指offer 面试题34 丑数
题目:我们把只包含因子 2、3 和 5 的数称作为丑数(Ugly number)。求从小到大的顺序的第 1500 个丑数。
例如 6、8 都是丑数,但 14 不是,因为它包含了因子 7。习惯上,我们把 1 当做第一个丑数。
package algorithm.foroffer.top40; /** * Created by liyazhou on 2017/5/30. * 面试题34:丑数 * * 题目: * 我们把只包含因子 2、3 和 5 的数称作为丑数(Ugly number)。求从小到大的顺序的第 1500 个丑数。 * 例如 6、8 都是丑数,但 14 不是,因为它包含了因子 7。习惯上,我们把 1 当做第一个丑数。 * * 考查点: * 1. 根据定义找规律(没找到 =_=) * * 思路: * 1. 本办法,依次判断每一个自然数是否是丑数,当 k =1500 时明显感觉算时间较长 * */ public class Test34 { public static int getKthUglyNumber(int k){ if (k < 1) return -1; for (int number = 1; ; number++){ if (isUgly(number)) k--; if (k == 0) return number; } } private static boolean isUgly(int number){ while (number % 2 == 0) number /= 2; while (number % 3 == 0) number /= 3; while (number % 5 == 0) number /= 5; return number == 1; } public static void main(String[] args){ System.out.println(getKthUglyNumber(8)); // 9 System.out.println(getKthUglyNumber(1500)); // 859963392 } }
相关文章推荐
- 剑指offer之面试题34丑数
- 【剑指Offer】面试题34:丑数
- 【剑指Offer学习】【面试题34:丑数】
- 剑指offer面试题34:丑数
- 剑指offer面试题[34]丑数
- 剑指offer——面试题34:丑数
- 剑指Offer面试题34(Java版):丑数
- 【剑指offer 面试题34】丑数
- 剑指Offer----面试题34:丑数
- 剑指Offer_面试题34_丑数
- [剑指offer][面试题34]丑数
- 剑指offer——面试题34:丑数
- 剑指offer-面试题34-丑数
- 剑指offer 面试题34 丑数
- 剑指offer--面试题34: 丑数
- 剑指Offer面试题33把数组排成最小的数,面试题34丑数
- 【剑指offer】面试题34-丑数
- 剑指offer-面试题34:丑数
- 剑指offer——面试题34:丑数
- 【剑指offer】5.3时间效率与空间效率的平衡——面试题34:丑数