Skip to content

Commit 740fc41

Browse files
committed
修改了错误的书写
1 parent a5d39d0 commit 740fc41

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

notes/剑指offer面试题49--丑数.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
77
穷举法,挨个判断是否是丑数,即使那个数不是丑数也要判断,显然时间复杂度太高。
88
9-
有没有方法每一步计算只是得到丑数呢?根据丑数的定义,所有丑数都是2、3、5这三个因子的任意搭配的任意多次乘积,比如2x2,2x3, 2x2x3x5等等。那么从1开始,分别乘以2、3、5,得到2、3、5三个丑数,但是这并不是正确的排序,我们知道3、5之间还有个4也是丑数。1之后的下一个丑数,一定是2、3、5其中的一个,显然应该选三者中最小的2,现在丑数集合为{1, 2}且有序,刚才选走的2是1x2得到的,因此下一个和2相乘的丑数应该是1之后的数字2(丑数集合已经有序,直接选择下一个)。现在又得到三个候选的丑数4、3、5,再次选择三者中最小的3,得到当前丑数集合{1, 2, 3},刚被选走的3由1x3得到,因此下一个要和3相乘的按照丑数集合的顺序应该是2,然后又得到了三个候选的丑数4、6、5,选择最小的5.....不断重复,自始至终只和丑数打交道。
9+
有没有方法每一步计算只是得到丑数呢?根据丑数的定义,所有丑数都是2、3、5这三个因子的任意搭配的任意多次乘积,比如2x2,2x3, 2x2x3x5等等。那么从1开始,分别乘以2、3、5,得到2、3、5三个丑数,但是这并不是正确的排序,我们知道3、5之间还有个4也是丑数。1之后的下一个丑数,一定是2、3、5其中的一个,显然应该选三者中最小的2,现在丑数集合为{1, 2}且有序,刚才选走的2是1x2得到的,因此下一个和2相乘的丑数应该是1之后的数字2(丑数集合已经有序,直接选择下一个)。现在又得到三个候选的丑数4、3、5,再次选择三者中最小的3,得到当前丑数集合{1, 2, 3},刚被选走的3由1x3得到,因此下一个要和3相乘的按照丑数集合的顺序应该是2,然后又得到了三个候选的丑数4、6、5,选择最小的4.....不断重复,自始至终只和丑数打交道。
1010
1111
设定三个数t2、t3、t3专门用于分别和2、3、5相乘,某次选择中选走了ti,那么ti从丑数集合中选择下一个数,下次再和i相乘生成一个新的候选丑数,本次没有被选中的,下次继续参与比较。这样能保证下一个丑数一定在三个候选项中,且是三个候选项中最小的那个。
1212

0 commit comments

Comments
 (0)