1.通常は醜いの数であるかを確認後、ナンバーワントラバーサルのですか?
// 顔質問49:ナンバー醜い // タイトル:我々は唯一の要因2、3と5を構成するには醜い数(醜い数)の数と呼ばれています。昇順探している // 1500の醜い大きな注文の数を。それが要因7が含まれているため、例えば6,8は、14醜いではなく、いくつかあります。 // 実際、我々は最初の醜い数として1を置きます。 書式#include <iostreamの> // コードアルゴリズム1 =================== ==================== = // 追加のメモリ、直接計算BOOL IsUgly(INTの数)// 判定は醜い数ません{ ながら(数%2 == 0 ) 数 / = 2 ; 一方、(数%3 == 0 ) 数 / = 3 ; 一方(個数%5。 == 0 ) の数 / = 5 ; リターン(==番号1)?trueに:falseに; } int型 GetUglyNumber_Solution1(INT インデックス) { IF(指数<= 0 ) 戻り 0 ; int型の数= 0 。 INT uglyFound = 0 ; 一方(uglyFound <インデックスが)// カウントを終了する開始 { ++数; もし(IsUgly(数)) ++ uglyFound。 } 戻り値の数; }
ネットワークオフ2.牛がすごかったです
INT GetUglyNumber_Solution(INT インデックス){ IF(インデックス< 7。 ) リターン指数、 ベクトル < INT > RES(インデックス); RES [ 0 ] = 1 ; // 。と呼ばれる慣用醜い最初の数1 のint T2 = 0、T3 = 0、T5 = 0 、Iは、 のための(I = 1 ; I索引を<++ I) { RES [I] =分(RES [T2] * 2、分(RES [T3] * 3。、RES [T5 ] * 5)); もし(RES [I] == RES [T2] * 2)T2 ++ 。 もし(RES [I] == RES [T3] * 3)T3 ++ 。 もし(RES [I] == RES [T5] * 5)T5 ++ 。 } 戻り RES [索引- 1 ]。 }