我最近得到了一个实习位置,其中一个问题的采访是与此类似:的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