算法是本人的薄弱项,今天开始,尽量抽出时间去学一些算法,然后进行归纳总结,将学习的过程记录于简书,希望对自己是一种提高,如果能帮助到别人就更好了。
---学习的过程都是根据网上一些技术大牛的题和思路编写,都是Java版本比较多,个人用OC编写,加上一些个人的总结,菜鸟一枚,不喜勿喷。
题目:我们把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第1500个丑数。
个人理解:此类题第一种思路就是,拆解成两个部分,第一部分是这个数是不是满足条件,也就是本题,判断这个数是不是丑数,第二部分就是第几个丑数 就涉及循环递增了,一直算到第1500个;
方法1: 第一步。
写一个判断是否为丑数的函数
第二步。
第二部的思路主要是通过循环去递增,并且随着数的递增去判断是否为丑数并用数去记录,确保是想要的那个第几个的数。(好乱说的,上代码)
(1)number为记录求解的结果的变量,
(2)count为记录第几个,每次判断为丑数后,丑数加1
(3)index为你要求的第几个丑数;
这种方法有些慢,毕竟是遍历的方法
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
方法二:
还没看懂,未完待续。。。