剑指offer 34. 丑数
来源:互联网 发布:数据统计分析基础 编辑:程序博客网 时间:2024/06/06 01:50
//题目:丑数,我们把只包含因子2,3,5的数称为偶数,按从下到大第1500个丑数。//解法1:逐个判段每个数是否是丑数public class Main {public static void main(String[] args) throws Exception {System.out.println(findUglyNumber(100));}public static int findUglyNumber(int n){int result = 1;int num = 2;while(result<n){if(isUgly(num)){result++;}num++;}return num-1;}public static boolean isUgly(int num){while(num % 2 == 0){num = num/2;}while(num % 3 == 0){num = num/3;}while(num % 5 == 0){num = num/5;}if(num == 1){return true;}else{return false;}}}//解法2:逐个计算下一个丑数的值,并将其保存在数组中,使用三个下标分别代表2,3,5的情况public class Main {public static void main(String[] args) throws Exception {System.out.println(findUglyNumber(1500));}public static int findUglyNumber(int n){if(n<=0){return 0;}int[] number = new int[n];int index = 0;number[index] = 1;index++;int index2 = 0;//使用三个index来标记2,3,5int index3 = 0;int index5 = 0;while(index<n){number[index] = getMin(number[index2]*2,number[index3]*3,number[index5]*5);while(number[index]>=number[index2]*2){//更新三个标签的值index2++;}while(number[index]>=number[index3]*3){index3++;}while(number[index]>=number[index5]*5){index5++;}index++;}return number[index-1];}public static int getMin(int num1, int num2, int num3){//取三个值中的最小值int result = num1;if(result>num2){result = num2;}if(result>num3){result = num3;}return result;}}
0 0
- 剑指offer 34. 丑数
- 【剑指offer】丑数
- 剑指offer-丑数
- 《剑指offer》丑数
- 【剑指Offer】丑数
- 剑指offer:丑数
- 剑指offer-丑数
- [剑指offer]丑数
- 剑指offer:丑数
- [剑指offer]丑数
- 《剑指offer》-丑数
- 剑指offer----丑数
- 剑指offer|丑数
- 剑指offer-丑数
- 剑指Offer:丑数
- 剑指offer--丑数
- 剑指offer-丑数
- 剑指offer 丑数
- 子例程引用与闭包:
- 回调函数2:继续说明
- static_cast与dynamic_cast转换
- 3月考核
- swing的初步学习(读书笔记)
- 剑指offer 34. 丑数
- 发财树怕晒吗
- 堆栈在C语言中的定义(单片机的中堆栈相当于栈)
- 错排思想
- JS倒计时结束关闭页面:Scripts may close only the windows that were opened by it.
- CodeForces 805A Fake NP
- Hibernate配置文件hbm主键的generator可选项
- Java连接数据库
- DB2使用命令行连接远程数据库