题解 | #跳台阶#//关键是理解 f[n] = f[n-1] + f[n -2]; 注释详细

跳台阶

http://www.nowcoder.com/practice/8c82a5b80378478f9484d87d1c5f12a4

/**
* 你可以想如果青蛙当前在第n级台阶上,那它上一步是在哪里呢?显然,由于它可以跳1级台阶或者2级台阶,
* 所以它上一步必定在第n-1,或者第n-2级台阶,也就是说它跳上n级台阶的跳法数是跳上n-1和跳上n-2级台阶的跳法数之和。
* 设跳上 n 级台阶有 f(n) 种跳法,f(n) = f(n - 1) + f(n - 2)。
*/
public class Solution {
    public int jumpFloor(int target) {
        //关键是理解 f(target) = f(target-1) + f(target -2);
        if(target <= 1){
            return 1;
        }
        //从2开始往上推 f(2) = f(1) + f(2)
        //这里high 表示高台阶 f(target - 1) low 表示低台阶 f(target - 2)
        int high = 1; // 因为从2开始 所以high 是 f(1) = 1;
        int low = 1;//f(0) = 1,一个台阶都没有 那只用一种方法了 不用跳就可以完成 就这一种
        int result = 0;
        for(int i = 2;i<=target;i++){
            result = high + low; //此时result 就是f(i)了
            low = high;//往上推一步 f(i - 2) 推到f(i - 1)
            high = result;//往上推一步 f(i - 1) 推到f(i) 这样下次循环就能求得f(i + 1)了 一直推到f(target)
        }
        return result;
    }
}
全部评论

相关推荐

💼公司岗位&nbsp;tx客户端岗本人背景中九硕,cpp选手。当时在牛子上看cpp选手找不到后端岗实习,遂投了腾子的客户端想练练手。🕐面试过程投递之后很快约面了,一面面试官比较和蔼问的也是正常八股加项目的模式。然后约了二面,二面面试官应该是入职后的leader,这轮面试就离谱了,一开始问了一些八股(感觉那面试官也不怎么懂技术像是照着书上写好的问题问一样),后面离谱的来了,直接疯狂压力测试(你为什么觉得你能xxx,你能不能接受xxx)。当时因为对tx还有滤镜,把自己当作一个牛马的姿态来回答这些问题。面完之后面试官可能觉得我是一个合格的牛马,他加了我微信,问我什么时候能去实习,我说六月初,他说有点晚了,然后考虑了一天还是给我过了面试,然后3面和hr面就也是正常流程了。🐶事件起因5月末的时候导师临时给安排了一个项目,于是我就去微信问那个leader,能不能推迟到6月24入职,如果不能我可以主动放弃offer,他当时犹豫再三还是同意了(现在回想起来可能是当时还没有备胎)。就在昨天他又问我什么时候入职,然后我说24号,他说有点晚叫我看看系统上还有没有其它入职时间,因为我还没在系统上填入职信息(在牛子上看到说只有快入职了,才会有人审核,遂想端午节后再填),查看不了可申请入职的时间。和他说了原因后,这下给他抓到把柄了,直接来一句&amp;quot;你对这次实习并不重视,确实没什么必要了&amp;quot;&nbsp;&nbsp;😅。感觉应该是找到备胎硬气了,就想把我踹走。不过爷也不想去了,客户端前景本来就不太好,这个leader也是个pua怪加压力怪,反正也是双向选择。最后再给大家一个建议,在面试过程中就感觉不舒服的组,一定不要去了,去了也只会更难受。 #不给转正的实习,你还去吗#&nbsp;&nbsp;#找实习多的是你不知道的事#
景洪:“在面试过程中就感觉不舒服的组,一定不要去了,去了也只会更难受。” 谢谢楼主的总结,这个太赞同了,我有次就是实习前面试感觉体验特别差,入职之后就是各种pua和压力。 大佬,你值得更好的
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务