D131746.MinCostClimbingStairs题目链接746.MinCostClimbingStairs题目分析给定一个数组,每走一步都需要一定的代价。您可以一次走1或2个步骤。找到走到尽头所需的最少步数。解题的思路一开始是用Dijkstra\(Dijkstra\)算法。但是Dijkstra使用的是当前最优,所以如果后面需要的步数比较少,这个算法就不适用了。接下来想到的是递归方法。在每一步尝试两个,一步和两步。对于一些短数组可以顺利执行,但是提交代码后出现Timeexceeded错误。本地调试后出现“嵌套层数达到最高256层”的错误,嵌套层数过多。于是开始分析有没有更好的算法。通过分析,发现前面的步骤和后面的步骤没有太大的关系。可以将之前走过的步数加起来组成一个新的数组,最后两个元素中最小的就是最小步数。最终代码$value){if($key<2){继续;}$cost[$key]+=min($cost[$key-1],$cost[$key-2]);}$数量=计数($成本);返回min($cost[$amount-1],$cost[$amount-2]);}}如果您觉得本文对您有用,欢迎使用爱登根支持。
