をスキップするが、これに類似していた:Javaの計算マックス階段のステップと私は最近、インターンの位置や質問のいずれかの面接を得た階段
入力:nのアクションの数、kのジャックは、彼がステップの 最大数に到達したいアクションのn個の量を持っていますが、k番目の階段を踏むことができません:あなたは 質問
を踏むことができませんでした階段。それぞれの アクションの場合、ジャックは彼の現在のステップに留まるか、または彼が012番目のアクションを実行している間に が実行されていれば、これを続行することができます。 アクションが終了するまで続きます。
出力:最大階段は、彼はそれが(そこインタビュアーに)Hackerrankを経由して試験し、私は残りのタイミング
で8テストケースのうち、わずか3を通過した
n個のアクションの中に到達することができます
は、これはその場でコード化された私の解決策だったと私はそれを最適化できず、はるかに最適化されたソリューションがあった場合には思っていた:
static int maxStep(int n, int k) {
int result = 0;
if (n == 0) {
return result;
}
return maxStepHelper(n,0, k, result);
}
static int maxStepHelper(int n,int i,int k,int result) {
// At n+1 steps, previous steps' results are recorded and this is mainly used to stop and show previous results
if (i == n+1) {
return result;
}
int nextStep = i + result;
if (nextStep == k) {
return maxStepHelper(n,i+1,k,result);
}
return Math.max(maxStepHelper(n,i+1,k,result),maxStepHelper(n,i+1,k,result+i));
}
私は助けにならなかったかもしれない再帰的アプローチを使用したことに注意してください。
ジャンプ 'i'ステップからのステップ' i'、またはジャンプ* * 'i'段階までです?そしてどのステップを始めるのでしょうか(おそらくゼロではないでしょう)。 –
あなたは 'i + 1'だけ動いているようです。命令はあなたが階段 '私'の階段の上に '私のステップを移動することができると言う –
申し訳ありませんが、私は明確ではなかったと推測:ステップiからステップをジャンプして0から始まる – mding5692