剑指offer:33丑数(Java)

剑指offer:33丑数

笑口常开好彩自然来

题目描述: 把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但 14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大 的顺序的第N个丑数。

题目解析:
简单来说,丑数=丑数*235

核心代码:

public int GetUglyNumber_Solution(int index) {if(index<=0){return 0;}int[] res = new int[index];int p2 = 0,p3 = 0,p5 = 0;res[0] = 1;for(int i = 1;i < index;i++){int min = Math.min(res[p2]*2,Math.min(res[p3]*3,res[p5]*5));if(min == res[p2]*2){res[i] = min;p2++;}if (min==res[p3]*3){res[i]=min; p3++;} if (min==res[p5]*5){res[i]=min; p5++;} }return res[index-1];}

测试用例:
在这里插入图片描述

完整代码块如下:

public class TestDemo3 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.print("请从键盘输入: index=");int index = scanner.nextInt();int getUglyNumber = GetUglyNumber_Solution(index);System.out.println(getUglyNumber);}public static int GetUglyNumber_Solution(int index) {if(index<=0){return 0;}//存储丑数int[] res = new int[index];int p2 = 0,p3 = 0,p5 = 0;res[0] = 1;for(int i = 1;i < index;i++){int min = Math.min(res[p2]*2,Math.min(res[p3]*3,res[p5]*5));if(min == res[p2]*2){res[i] = min;p2++;}if (min==res[p3]*3){res[i]=min;p3++;}if (min==res[p5]*5){res[i]=min;p5++;}}return res[index-1];}
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部