『剣指offer』—JavaScript(33)ブス
923 ワード
醜数
タイトルの説明
素因数2,3,5のみを含む数をブス数(Ugly Number)と呼ぶ.例えば、6、8はすべて丑数であるが、14は因子7を含むためではない.習慣的に私たちは1を最初の醜数と見なしています.小さいから大きい順のN番目の丑数を求めます.
構想丑数を配列に順番に保存し、次の丑数を求める. 次の丑数は、配列内のある丑数A*2,B*3,C*5の最小値によって得られる. テーマの規定によると、最初の丑数は1で、配列に格納される. の2番目の丑数は1*2、1*3、1*5の3つの中の最小値です. の3番目の丑数は2*2,1*3,1*5の3つの中の最小値であり,順次類推し,N番目の配列を求めた.
インプリメンテーションコード
タイトルの説明
素因数2,3,5のみを含む数をブス数(Ugly Number)と呼ぶ.例えば、6、8はすべて丑数であるが、14は因子7を含むためではない.習慣的に私たちは1を最初の醜数と見なしています.小さいから大きい順のN番目の丑数を求めます.
構想
インプリメンテーションコード
function GetUglyNumber_Solution(index) {
if (index === 0) return 0;
var uglyNum = [1];
var factor2 = 0,
factor3 = 0,
factor5 = 0;
for (var i = 1; i < index; i++) {
uglyNum[i] = Math.min(uglyNum[factor2] * 2, uglyNum[factor3] * 3, uglyNum[factor5] * 5);
if (uglyNum[i] === uglyNum[factor2] * 2) factor2++;
if (uglyNum[i] === uglyNum[factor3] * 3) factor3++;
if (uglyNum[i] === uglyNum[factor5] * 5) factor5++;
}
return uglyNum[index - 1];
}