dp[i]:可以到第 i 阶的方法有dp[i]种,所以dp[n]就是ans(注意dp.length = n+1)
显而易见,dp[1]是1,dp[2]是2(一脚直接1阶;一脚直接2阶 or 先一阶再二阶)
因此我们初始化dp[1],dp[2],然后直接由此循环得到结果即可
classSolution{int ans =0;publicintclimbStairs(int n){if(n <2){return1;}// dp[i]:代表有dp[i]种方法到第n阶int[] dp =newint[n+1];// 走0阶和1阶需要的// 由此,实现之后的每一个台阶都可以看成之前的台阶走两步或走一步到dp[1]=1; dp[2]=2;// 初始化结束,现在开始找结果for(int i =3;i <= n;i++){dp[i]= dp[i-1]+ dp[i-2];}return dp[n];}}
2. 动态规划 O(n)、O(1)
在1的基础上改,实际上只需要维护三个变量即可。
classSolution{int ans =0;publicintclimbStairs(int n){if(n <2){return1;}int first =1;int second =2;int res =-1;// 初始化结束,现在开始找结果for(int i =3;i <= n;i++){res = first + second;first = second;second = res;}return res;}}
Oracle 18c For Exadata版本的介质已经发布,作为一名心急的老粉丝,欣喜的发现可以安装在普通的Linux平台。但是在通过DBCA建库的时候会报ORA-12754错误,不过这也难不倒万能的网络。图形界面不行,我们还可以手工建库,前…
文章目录题目描述代码 & 思路题目描述
回溯,由最小子树的镜像,得到次小子树的镜像判断,一直回溯到根结点即可
代码 & 思路
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left…
文章目录题目描述代码 & 思路题目描述
按层次,那么先按序读完本层值,并且存入队列中,再根据队列走下一层的值即可
代码 & 思路
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode …
文章目录题目描述代码 & 思路题目描述
全局变量ans,遍历一遍树更新ans即可带着 depth 跑 DFS
代码 & 思路 写成dfs了,确实是bfs /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* …