醜い問題(3つのポインター)

因子2、3、および5の醜い数字のみを含む番号を呼び出します。小さいものから大きいものの順にn番目の醜い数を見つけます。
 
例:
入力:n = 10
出力:12
説明:1、2、3、4、5、6、8、9、10、12は最初の10個の醜い数字です。
 
アイデア:
醜い数列の各配列は、前のx2、x3、またはx5から取得され、列の各数には、その後ろにx2、x3、x5があることがわかります。
このように、追加するたびに最小になるため、3つのポインターを定義できます。
たとえば、最初にd2、d3、d5はすべて下付き文字1を指します。
dp [1] = 1;
dp [2] = min(dp [d2] * 2、min(dp [d3] * 3、dp [d5] * 5));
ここでは、dp [d2] * 2 = 2が最小であるため、すべてが追加されます。d2++;
同時に、2 * 3 = 3 * 2という同じサイズの2つのケースが存在することを主な考慮事項とします。毎回判断する必要があります。同じサイズの場合、両方のポインターが後方に移動する必要があります。

 

 

 

おすすめ

転載: www.cnblogs.com/Charls/p/12688886.html