我最近得到了一個實習位置,其中一個問題的採訪是與此類似:的Java計算最大步,然後跳到樓梯
輸入:N爲一個動作數,k樓梯,你可以不踩 上
問題:傑克有他想要達到的步驟 最大數量的措施N量,但在第k個樓梯不可能一步到位。對於每一個 行動,傑克可以保持在他目前的步驟或者如果他的第i個動作 並且這一直持續直到他完成他的第n個 行動,我可以跳下我的步驟。
輸出:最大樓梯他可以
據經由Hackerrank測試(與訪問者那裏),我只通過3超過了8試驗例其餘超時
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'步驟?你從哪一步開始(大概不是零)。 –
你似乎只是在移動'我+ 1'。說明說,你可以向上移動'我'的任何樓梯'我的步驟' –
對不起,我不清楚:跳我從步驟我的步驟,你從0開始 – mding5692